Compare commits

...

12 commits

9 changed files with 188 additions and 148 deletions

20
flake.lock generated
View file

@ -101,11 +101,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1716327911, "lastModified": 1716576411,
"narHash": "sha256-PI+wygItS/TKzi4gEAROvKTUzTx9GT+PGBttS/IOA/Q=", "narHash": "sha256-FIN1wMoyePBTtibCbaeJaoKNLuAYIGwLCWAYC1DJanw=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprcursor", "repo": "hyprcursor",
"rev": "27ca640abeef2d425b5dbecf804f5eb622cef56d", "rev": "57298fc4f13c807e50ada2c986a3114b7fc2e621",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -144,11 +144,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1716417827, "lastModified": 1717447622,
"narHash": "sha256-TYHpA/i9+Ns01+RzknJ5eYskQXL9GTTA7JX9Lo4JKVg=", "narHash": "sha256-yT+e+NxXDes75AXaoxr41uStjXQgwK1SR5ZQEl27XlU=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "7ad9116de8d0b7dac27eaf080bd92998a8fb40e5", "rev": "d0a224a4915b5a90555818ed3f9e49e1a61b7cdb",
"revCount": 4728, "revCount": 4761,
"submodules": true, "submodules": true,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
@ -236,11 +236,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1715791527, "lastModified": 1716473782,
"narHash": "sha256-HhQ4zvGHrRjR63ltySSeg+x+0jb0lepiutWdnFhLRoo=", "narHash": "sha256-+qLn4lsHU6iL3+HTo1gTQ1tWzet8K9h+IfVemzEQZj8=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprlang",
"rev": "969cb076e5b76f2e823aeca1937a3e1f159812ee", "rev": "87d5d984109c839482b88b4795db073eb9ed446f",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -0,0 +1,66 @@
{ pkgs, ... }:
{
# support power features such as suspend to ram
powerManagement.enable = true;
# tune power saving options on boot
powerManagement.powertop.enable = true;
# thermald proactively prevents overheating on intel CPUs and works well with other tools
services.thermald.enable = true;
# power-profile-daemon for power management
services.power-profiles-daemon.enable = true;
# manage fans for macbook devices
services.mbpfan.enable = true;
# better performance than the actual intel driver
services.xserver.videoDrivers = [ "modesetting" ];
# needed for our broadcom/brcm 4377b chip to work
hardware.firmware = with pkgs; [
my.apple-firmware
];
# handle suspend issues (fuck you broadcom!)
powerManagement.powerDownCommands = ''
${pkgs.kmod}/bin/modprobe -r brcmfmac_wcc
${pkgs.kmod}/bin/modprobe -r brcmfmac
${pkgs.kmod}/bin/modprobe -r hci_bcm4377
'';
powerManagement.resumeCommands = ''
${pkgs.kmod}/bin/modprobe hci_bcm4377
${pkgs.kmod}/bin/modprobe brcmfmac
${pkgs.kmod}/bin/modprobe brcmfmac_wcc
'';
# VA-API
hardware.opengl = {
extraPackages = with pkgs; [
intel-media-driver
intel-vaapi-driver
libvdpau-va-gl
];
extraPackages32 = with pkgs.pkgsi686Linux; [
intel-media-driver
intel-vaapi-driver
libvdpau-va-gl
];
};
environment.variables = {
LIBVA_DRIVER_NAME= "iHD";
VDPAU_DRIVER = "va_gl";
# VA-API on firefox
MOZ_DISABLE_RDD_SANDBOX = "1";
};
environment.systemPackages = with pkgs; [ intel-gpu-tools ];
boot.kernelParams = [
# enable the i915 sandybridge framebuffer compression (475mw savings)
"i915.i915_enable_fbc=1"
"i915.fastboot=1"
"i915.enable_gvt=1"
# makes waking up from suspend much more bareable
"mem_sleep_default=s2idle"
];
}

View file

@ -21,7 +21,7 @@
# compatibility # compatibility
wineWowPackages.waylandFull winetricks wineWowPackages.waylandFull winetricks
# misc # misc
bat file which tree prismlauncher yt-dlp wl-screenrec bat file which prismlauncher yt-dlp wl-screenrec
] ++ (with pkgs.my; [ ] ++ (with pkgs.my; [
# none yet # none yet
]) ++ (with pkgs.gnome; [ ]) ++ (with pkgs.gnome; [
@ -75,10 +75,12 @@
distractions.discord.vesktop = true; distractions.discord.vesktop = true;
distractions.steam.enable = true; distractions.steam.enable = true;
# tools # tools
tools.mpv.enable = true; tools.eza.enable = true;
tools.gpg.enable = true; tools.gpg.enable = true;
tools.mpv.enable = true;
}; };
}; };
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
systemd.services.NetworkManager-wait-online.enable = false;
} }

View file

@ -12,6 +12,8 @@
inputs.hardware.nixosModules.apple-t2 inputs.hardware.nixosModules.apple-t2
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
./apple-macbook-air-9-1.nix
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ]; boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
@ -26,54 +28,6 @@
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
}; };
# support power features such as suspend to ram
powerManagement.enable = true;
# tune power saving options on boot
powerManagement.powertop.enable = true;
# thermald proactively prevents overheating on intel CPUs and works well with other tools
services.thermald.enable = true;
# power-profile-daemon for power management
services.power-profiles-daemon.enable = true;
# manage fans for macbook devices
services.mbpfan.enable = true;
# better performance than the actual intel driver
services.xserver.videoDrivers = [ "modesetting" ];
# needed for our broadcom/brcm 4377b chip to work
hardware.firmware = with pkgs; [
my.apple-firmware
];
# VA-API
hardware.opengl = {
extraPackages = with pkgs; [
intel-media-driver
intel-vaapi-driver
libvdpau-va-gl
];
extraPackages32 = with pkgs.pkgsi686Linux; [
intel-media-driver
intel-vaapi-driver
libvdpau-va-gl
];
};
environment.variables = {
LIBVA_DRIVER_NAME= "iHD";
VDPAU_DRIVER = "va_gl";
# VA-API on firefox
MOZ_DISABLE_RDD_SANDBOX = "1";
};
boot.kernelParams = [
# enable the i915 sandybridge framebuffer compression (475mw savings)
"i915.i915_enable_fbc=1"
"i915.fastboot=1"
"enable_gvt=1"
];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/disk/by-uuid/0f09afdc-88e4-4764-818b-77828931278f"; { device = "/dev/disk/by-uuid/0f09afdc-88e4-4764-818b-77828931278f";
fsType = "ext4"; fsType = "ext4";

View file

@ -21,34 +21,34 @@ in {
package = cfg.package; package = cfg.package;
settings = { settings = {
general = { general = {
lock_cmd = "${pkgs.procps}/bin/pidof hyprlock || ${lib.getExe config.modules.desktop.hyprlock.package}"; lock_cmd = "${pkgs.procps}/bin/pidof hyprlock || ${lib.getExe config.modules.desktop.hyprlock.package}";
unlock_cmd = "${pkgs.procps}/bin/pkill -USR1 hyprlock"; unlock_cmd = "${pkgs.procps}/bin/pkill -USR1 hyprlock";
before_sleep_cmd = "${pkgs.systemd}/bin/loginctl lock-session"; # lock the screen before sleeping before_sleep_cmd = "${pkgs.systemd}/bin/loginctl lock-session"; # lock the screen before sleeping
after_sleep_cmd = "${hyprctl} dispatch dpms on"; # turn on the screen to avoid moving mouse/pressing key after_sleep_cmd = "${hyprctl} dispatch dpms on"; # turn on the screen to avoid moving mouse/pressing key
}; };
listener = [ listener = [
{ {
timeout = 60 * 1; timeout = 60 * 1;
on-timeout = "${lib.getExe pkgs.brightnessctl} -c backlight -s set 1%"; # dim screen, save brightness state on-timeout = "${lib.getExe pkgs.brightnessctl} -c backlight -s set 1%"; # dim screen, save brightness state
on-resume = "${lib.getExe pkgs.brightnessctl} -c backlight -r"; # restore previous screen brightness state on-resume = "${lib.getExe pkgs.brightnessctl} -c backlight -r"; # restore previous screen brightness state
} }
{ {
timeout = 90; # 1.5 min timeout = 90; # 1.5 min
on-timeout = "${hyprctl} dispatch dpms off"; # turn off screen on-timeout = "${hyprctl} dispatch dpms off"; # turn off screen
on-resume = "${hyprctl} dispatch dpms on"; # turn it back on on-resume = "${hyprctl} dispatch dpms on"; # turn it back on
} }
{ {
timeout = 60 * 2; # 2 min timeout = 60 * 2; # 2 min
on-timeout = "${pkgs.systemd}/bin/loginctl lock-session"; # lock computer on-timeout = "${pkgs.systemd}/bin/loginctl lock-session"; # lock computer
} }
{ {
timeout = 60 * 15; # 15 min timeout = 60 * 15; # 15 min
on-timeout = "${pkgs.systemd}/bin/systemctl suspend"; # sleep/suspend on-timeout = "${pkgs.systemd}/bin/systemctl suspend"; # sleep/suspend
} }
]; ];
}; };
}; };
}; };

View file

@ -21,6 +21,7 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.displayManager.sessionPackages = [ cfg.package ]; services.displayManager.sessionPackages = [ cfg.package ];
xdg.portal = { xdg.portal = {
enable = true; enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk cfg.portalPackage ]; extraPortals = [ pkgs.xdg-desktop-portal-gtk cfg.portalPackage ];
@ -30,6 +31,15 @@ in {
}; };
}; };
}; };
# fixes a few things, most notibly, xwayland
programs.hyprland = {
enable = true;
xwayland.enable = true;
package = cfg.package;
portalPackage = cfg.portalPackage;
};
hm.wayland.windowManager.hyprland = { hm.wayland.windowManager.hyprland = {
enable = true; enable = true;
xwayland.enable = true; xwayland.enable = true;
@ -84,6 +94,9 @@ in {
# scroll through workspaces with mod + scroll # scroll through workspaces with mod + scroll
"$mod, mouse_down, workspace, e+1" "$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1" "$mod, mouse_up, workspace, e-1"
# alternatively, scroll through workspaces with mod + brackets
"$mod, bracketleft, workspace, e-1"
"$mod, bracketright, workspace, e+1"
] ++ ( ] ++ (
# workspaces # workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10} # binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
@ -137,33 +150,21 @@ in {
windowrulev2 = [ windowrulev2 = [
# common popups # common popups
"float, class:org.gnome.FileRoller" "float, class:org.gnome.FileRoller"
"center, class:org.gnome.FileRoller"
"size 1100 650, class:org.gnome.FileRoller" "size 1100 650, class:org.gnome.FileRoller"
"float, class:org.gnome.Loupe" "float, class:org.gnome.Loupe"
"center, class:org.gnome.Loupe"
"size 1100 650, class:org.gnome.Loupe" "size 1100 650, class:org.gnome.Loupe"
"float, initialTitle:^Open Folder$" "float, initialTitle:^Open Folder$"
"center, initialTitle:^Open Folder$"
"size 1100 650, initialTitle:^Open Folder$" "size 1100 650, initialTitle:^Open Folder$"
"float, initialTitle:^Open File$" "float, initialTitle:^Open File$"
"center, initialTitle:^Open File$"
"size 1100 650, initialTitle:^Open File$" "size 1100 650, initialTitle:^Open File$"
"float, initialTitle:^Open Files$" "float, initialTitle:^Open Files$"
"center, initialTitle:^Open Files$"
"size 1100 650, initialTitle:^Open Files$" "size 1100 650, initialTitle:^Open Files$"
"float, initialTitle:^Save As$" "float, initialTitle:^Save As$"
"center, initialTitle:^Save As$"
"size 1100 650, initialTitle:^Save As$" "size 1100 650, initialTitle:^Save As$"
"float, initialTitle:^Select a file to open$" "float, initialTitle:^Select a file to open$"
"center, initialTitle:^Select a file to open$"
"size 1100 650, initialTitle:^Select a file to open$" "size 1100 650, initialTitle:^Select a file to open$"
"float, initialTitle:^File Upload$" "float, initialTitle:^File Upload$"
"center, initialTitle:^File Upload$"
"size 1100 650, initialTitle:^File Upload$" "size 1100 650, initialTitle:^File Upload$"
# https://github.com/hyprwm/Hyprland/issues/6154
"center, class:^gcr-prompter"
"center, class:^pinentry-"
"center, class:^polkit-"
"float, class:\.exe$" "float, class:\.exe$"

View file

@ -20,61 +20,62 @@ in {
package = cfg.package; package = cfg.package;
settings = { settings = {
general = { general = {
hide_cursor = false; hide_cursor = false;
no_fade_in = true; no_fade_in = true;
no_fade_out = true; no_fade_out = true;
}; text_trim = false;
};
background = [ background = [
{ {
path = toString ../../assets/lockscreen.png; path = toString ../../assets/lockscreen.png;
blur_passes = 3; blur_passes = 3;
blur_size = 6; blur_size = 6;
} }
]; ];
label = [ label = [
{ {
text = "cmd[update:1000] echo \"$(date +'%H:%M')\""; text = "cmd[update:1000] echo \"$(date +'%H:%M')\"";
font_size = 58; font_size = 58;
color = "rgb(${base05})"; color = "rgb(${base05})";
font_family = config.modules.desktop.fonts.fonts.sansSerif.family; font_family = config.modules.desktop.fonts.fonts.sansSerif.family;
position = "0, 30"; position = "0, 30";
halign = "center"; halign = "center";
valign = "center"; valign = "center";
} }
{ {
text = "cmd[update:1000] echo \"$(date +'%A %B %e')\""; text = "cmd[update:1000] echo \"$(date +'%A %B %e')\"";
font_size = 14; font_size = 14;
color = "rgb(${base05})"; color = "rgb(${base05})";
font_family = config.modules.desktop.fonts.fonts.sansSerif.family; font_family = config.modules.desktop.fonts.fonts.sansSerif.family;
position = "0, 10"; position = "0, 10";
halign = "center"; halign = "center";
valign = "center"; valign = "center";
} }
]; ];
input-field = [ input-field = [
{ {
size = "300, 28"; size = "300, 28";
outline_thickness = 2; outline_thickness = 2;
dots_size = 0.2; dots_size = 0.2;
fade_on_empty = false; fade_on_empty = false;
placeholder_text = ""; placeholder_text = "";
outer_color = "rgb(${base0E})"; outer_color = "rgb(${base0E})";
inner_color = "rgb(${base00})"; inner_color = "rgb(${base00})";
font_color = "rgb(${base05})"; font_color = "rgb(${base05})";
check_color = "rgb(${base02})"; check_color = "rgb(${base02})";
fail_color = "rgb(${base08})"; fail_color = "rgb(${base08})";
capslock_color = "rgb(${base09})"; capslock_color = "rgb(${base09})";
position = "0, -30"; position = "0, -30";
halign = "center"; halign = "center";
valign = "center"; valign = "center";
} }
]; ];
}; };
}; };
}; };

View file

@ -17,6 +17,7 @@ in {
usernamehw.errorlens usernamehw.errorlens
editorconfig.editorconfig editorconfig.editorconfig
ms-vsliveshare.vsliveshare ms-vsliveshare.vsliveshare
ms-vscode-remote.remote-ssh
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{ {
name = "discord-vscode"; name = "discord-vscode";

View file

@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.modules.software.tools.eza;
in {
options.modules.software.tools.eza = {
enable = mkEnableOption "Enable eza, a modern replacement for ls";
};
config = mkIf cfg.enable {
hm.programs.eza.enable = true;
hm.programs.eza.git = true;
};
}