diff --git a/flake.lock b/flake.lock index 584666f..9503414 100644 --- a/flake.lock +++ b/flake.lock @@ -89,11 +89,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1723685697, - "narHash": "sha256-Fp0MmV8FWrWFzYkLzPhkrc7Lj3NhMThCceDiETqEp9k=", + "lastModified": 1723813484, + "narHash": "sha256-nL9jkzzkArUr4XRqIohBlgAkQKfLsq9nzYrd/Dh+IRo=", "owner": "lilyinstarlight", "repo": "nixos-cosmic", - "rev": "4e1950ec1b6ff25a0f20ff590bf22a3065b62022", + "rev": "7d3dd56cca20e409261ff8c69867d38376f7ecae", "type": "github" }, "original": { @@ -735,11 +735,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1723556749, - "narHash": "sha256-+CHVZnTnIYRLYsARInHYoWkujzcRkLY/gXm3s5bE52o=", + "lastModified": 1723688146, + "narHash": "sha256-sqLwJcHYeWLOeP/XoLwAtYjr01TISlkOfz+NG82pbdg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4a92571f9207810b559c9eac203d1f4d79830073", + "rev": "c3d4ac725177c030b1e289015989da2ad9d56af0", "type": "github" }, "original": { @@ -799,11 +799,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1723362943, - "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=", + "lastModified": 1723637854, + "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a58bc8ad779655e790115244571758e8de055e3d", + "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", "type": "github" }, "original": { @@ -1057,11 +1057,11 @@ ] }, "locked": { - "lastModified": 1723602049, - "narHash": "sha256-Z/noCSn9WPkv7O77dWKLcBxe4Ub4bWyNzsL5JhjaQfw=", + "lastModified": 1723688259, + "narHash": "sha256-WzeUR1MG9MnJnh9T7qcVe/v12qHvJvzdc3Z5HCeE2ns=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "ea0bf33a11a26a62c60123c49d96011da396602c", + "rev": "6e75319846684326d900daff1e2e11338cc80d2b", "type": "github" }, "original": { diff --git a/hosts/desktop/boot.nix b/hosts/desktop/boot.nix index 0abb0ec..6a4c7cf 100644 --- a/hosts/desktop/boot.nix +++ b/hosts/desktop/boot.nix @@ -1,17 +1,15 @@ -{ - config, - lib, - outputs, - pkgs, - ... -}: +{ lib, pkgs, ... }: +let + configLimit = 5; + default = "@saved"; + kernel = pkgs.linuxPackages_latest; +in { # Configure bootloader with lanzaboot and secureboot boot = { loader = { systemd-boot = { - enable = false; - configurationLimit = 2; + enable = lib.mkForce false; }; efi = { @@ -24,14 +22,13 @@ enable = true; pkiBundle = "/etc/secureboot"; settings = { - default = "@saved"; + default = default; console-mode = "max"; }; - configurationLimit = 5; + configurationLimit = configLimit; }; - # Override kernel to latest - kernelPackages = pkgs.linuxPackages_latest; + kernelPackages = kernel; kernelParams = [ "quiet" diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index cd5ea11..11d424d 100644 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -4,7 +4,7 @@ { config, - outputs, + # outputs, lib, pkgs, ... @@ -35,28 +35,15 @@ in ./filesystems.nix ./sops.nix ../default.nix - + # specialisations + ./cosmic ./hyprland ./gnome ]; - specialisation = { + apps.discover-wrapped.enable = lib.mkDefault false; - cosmic.configuration = { - services = { - desktopManager.cosmic.enable = true; - displayManager.cosmic-greeter.enable = true; - - # disable plasma - displayManager.sddm.enable = false; - desktopManager.plasma6.enable = false; - }; - }; - }; - - apps.discover-wrapped.enable = false; - - nix.settings.trusted-users = [ "root" "matt" ]; + nix.settings.trusted-users = lib.mkDefault [ "root" user ]; services = { # Enable Desktop Environment. @@ -76,8 +63,8 @@ in # xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-kde ]; share.hardware.amd = { - enable = true; - lact.enable = true; + enable = lib.mkDefault true; + lact.enable = lib.mkDefault true; }; share.gaming.enable = true; @@ -86,14 +73,14 @@ in services = { # Enable the X11 windowing system. xserver = { - enable = true; + enable = lib.mkDefault true; }; # enable auto discovery of printers avahi = { - enable = true; - nssmdns4 = true; - openFirewall = true; + enable = lib.mkDefault true; + nssmdns4 = lib.mkDefault true; + openFirewall = lib.mkDefault true; }; borgbackup.jobs.home-matt = { @@ -111,8 +98,8 @@ in }; btrfs = { - autoScrub.enable = true; - autoScrub.fileSystems = [ + autoScrub.enable = lib.mkDefault true; + autoScrub.fileSystems = lib.mkDefault [ "/nix" "/root" "/etc" @@ -121,12 +108,13 @@ in ]; }; - ratbagd.enable = true; + ratbagd.enable = lib.mkDefault true; }; systemd = { services = { fix-wifi = { + enable = lib.mkDefault true; path = [ pkgs.bash pkgs.networkmanager @@ -143,6 +131,7 @@ in user.services = { rclone-home-proton = { + enable = lib.mkDefault true; path = [ pkgs.bash pkgs.rclone ]; script = '' rclone sync /home/matt proton-drive:backup-nix --exclude '/home/matt/Games/**' --exclude '/home/matt/1TB/**' --exclude '/home/matt/Downloads/**' @@ -150,6 +139,7 @@ in }; rsync-home = { + enable = lib.mkDefault true; path = [ pkgs.bash pkgs.rsync pkgs.openssh ]; script = '' rsync -rtpogvPlHzs --ignore-existing --exclude={'/home/matt/Games', '/home/matt/1TB', '/home/matt/Downloads/*', '/home/matt/.cache'} -e ssh /home/matt admin@10.0.1.18:/media/nas/main/backup/desktop-nix/home @@ -163,19 +153,19 @@ in hostName = hostname; # Enable Network Manager - networkmanager.enable = true; - networkmanager.wifi.powersave = false; - networkmanager.settings.connectivity.uri = "http://nmcheck.gnome.org/check_network_status.txt"; + networkmanager.enable = lib.mkDefault true; + networkmanager.wifi.powersave = lib.mkDefault false; + networkmanager.settings.connectivity.uri = lib.mkDefault "http://nmcheck.gnome.org/check_network_status.txt"; }; # Time config time = { - hardwareClockInLocalTime = false; + hardwareClockInLocalTime = lib.mkDefault false; }; - virtualisation.libvirtd.enable = true; + virtualisation.libvirtd.enable = lib.mkDefault true; - programs.gamemode.enable = true; + programs.gamemode.enable = lib.mkDefault true; # Configure environment environment = { @@ -217,7 +207,7 @@ in wineWowPackages.waylandFull ]; - sessionVariables = { + sessionVariables = lib.mkDefault { STEAM_FORCE_DESKTOPUI_SCALING = "1"; }; @@ -230,7 +220,7 @@ in # Define a user account. Don't forget to set a password with ‘passwd’. users.users."${user}" = { - isNormalUser = true; + isNormalUser = lib.mkDefault true; extraGroups = [ "wheel" "networkmanager" diff --git a/hosts/desktop/cosmic/default.nix b/hosts/desktop/cosmic/default.nix new file mode 100644 index 0000000..7005fe8 --- /dev/null +++ b/hosts/desktop/cosmic/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: +{ + specialisation.cosmic.configuration = { + services = { + desktopManager.cosmic.enable = true; + displayManager.cosmic-greeter.enable = true; + + # disable plasma + displayManager.sddm.enable = false; + desktopManager.plasma6.enable = false; + }; + }; +} \ No newline at end of file diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index 22a331d..8b89c4c 100644 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -2,11 +2,11 @@ let shellAliases = { ll = "ls -alh"; - update = "sudo nixos-rebuild switch --max-jobs 10"; + update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.18"; + update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.18"; update-flake = "sudo nix flake update ~/nix-config"; - update-specialisation = "sudo nixos-rebuild switch --specialisation --max-jobs 10"; - nas-update = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.18 --build-host localhost --flake ~/nix-config#jallen-nas"; - nas-ssh = "ssh admin@10.0.1.18"; + update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.18 --build-host admin@10.0.1.18 --flake ~/nix-config#jallen-nas"; + nas-ssh = "kitten ssh admin@10.0.1.18"; }; gitAliases = { diff --git a/hosts/desktop/hyprland/config/btop/default.nix b/hosts/desktop/hyprland/config/btop/default.nix index d98e384..182baeb 100644 --- a/hosts/desktop/hyprland/config/btop/default.nix +++ b/hosts/desktop/hyprland/config/btop/default.nix @@ -2,7 +2,7 @@ programs.btop = { enable = true; settings = { - color_theme = "~/.config/btop/themes/catppuccin_macchiato.theme"; + color_theme = "/home/matt/.config/btop/themes/catppuccin_macchiato.theme"; theme_background = true; truecolor = true; force_tty = false; diff --git a/hosts/desktop/hyprland/config/hypr/default.nix b/hosts/desktop/hyprland/config/hypr/default.nix index 98e786a..0d8ff5d 100644 --- a/hosts/desktop/hyprland/config/hypr/default.nix +++ b/hosts/desktop/hyprland/config/hypr/default.nix @@ -5,7 +5,13 @@ systemd.enable = true; settings = { - "$mainMod" = "SUPER"; + "$mod" = "SUPER"; + + # Mouse + # mouse_[up|down] - scroll wheel + # middle_mouse - 274 + # thumb_up - 276 + # thumb_down - 275 # l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active. # r -> release, will trigger on release of a key. @@ -18,66 +24,71 @@ # d -> has description, will allow you to write a description for your bind. # p -> bypasses the app's requests to inhibit keybinds. + # https://wiki.hyprland.org/Configuring/Binds/ + # https://wiki.hyprland.org/Configuring/Binds/#mouse-buttons + bind = [ - "$mainMod, Return, exec, kitty" - "$mainMod, Q, killactive, " - "$mainMod, M, exec, wlogout --protocol layer-shell" - "$mainMod, E, exec, nautilus" - "$mainMod, V, togglefloating, " - "$mainMod, D, exec, wofi --show drun" - "$mainMod, P, pseudo, "# dwindle - "$mainMod, S, togglesplit, "# dwindle - "$mainMod SHIFT, Q, exec, hyprlock" + "$mod, Return, exec, kitty" + "$mod, Q, killactive, " + "$mod, mouse:274, killactive, " + "$mod, M, exec, wlogout --protocol layer-shell" + "$mod, E, exec, nautilus" + "$mod, V, togglefloating, " + "$mod, D, exec, wofi --show drun" + "$mod, P, pseudo, "# dwindle + "$mod, S, togglesplit, "# dwindle + "$mod SHIFT, Q, exec, hyprlock" ", PRINT, exec, hyprshot -m region --clipboard-only" + "$mod,F,exec,hyprctl dispatch fullscreen active" # alt-tab between workspaces on active monitor "ALT, Tab, workspace, m+1" "ALT SHIFT, Tab, workspace, m-1" - "$mainMod, h, movefocus, l" - "$mainMod, l, movefocus, r" - "$mainMod, k, movefocus, u" - "$mainMod, j, movefocus, d" + "$mod, h, movefocus, l" + "$mod, l, movefocus, r" + "$mod, k, movefocus, u" + "$mod, j, movefocus, d" - "$mainMod, 1, workspace, 1" - "$mainMod, 2, workspace, 2" - "$mainMod, 3, workspace, 3" - "$mainMod, 4, workspace, 4" - "$mainMod, 5, workspace, 5" - "$mainMod, 6, workspace, 6" - "$mainMod, 7, workspace, 7" - "$mainMod, 8, workspace, 8" - "$mainMod, 9, workspace, 9" - "$mainMod, 0, workspace, 10" + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" - "$mainMod SHIFT, 1, movetoworkspace, 1" - "$mainMod SHIFT, 2, movetoworkspace, 2" - "$mainMod SHIFT, 3, movetoworkspace, 3" - "$mainMod SHIFT, 4, movetoworkspace, 4" - "$mainMod SHIFT, 5, movetoworkspace, 5" - "$mainMod SHIFT, 6, movetoworkspace, 6" - "$mainMod SHIFT, 7, movetoworkspace, 7" - "$mainMod SHIFT, 8, movetoworkspace, 8" - "$mainMod SHIFT, 9, movetoworkspace, 9" - "$mainMod SHIFT, 0, movetoworkspace, 10" + "$mod SHIFT, 1, movetoworkspace, 1" + "$mod SHIFT, 2, movetoworkspace, 2" + "$mod SHIFT, 3, movetoworkspace, 3" + "$mod SHIFT, 4, movetoworkspace, 4" + "$mod SHIFT, 5, movetoworkspace, 5" + "$mod SHIFT, 6, movetoworkspace, 6" + "$mod SHIFT, 7, movetoworkspace, 7" + "$mod SHIFT, 8, movetoworkspace, 8" + "$mod SHIFT, 9, movetoworkspace, 9" + "$mod SHIFT, 0, movetoworkspace, discord" - "$mainMod CTRL, l, resizeactive, 10 0" - "$mainMod CTRL, h, resizeactive, -10 0" - "$mainMod CTRL, k, resizeactive, 0 -10" - "$mainMod CTRL, j, resizeactive, 0 10" + "$mod CTRL, l, resizeactive, 10 0" + "$mod CTRL, h, resizeactive, -10 0" + "$mod CTRL, k, resizeactive, 0 -10" + "$mod CTRL, j, resizeactive, 0 10" - "$mainMod SHIFT, l, movewindow, r" - "$mainMod SHIFT, h, movewindow, l" - "$mainMod SHIFT, k, movewindow, u" - "$mainMod SHIFT, j, movewindow, d" + "$mod SHIFT, l, movewindow, r" + "$mod SHIFT, h, movewindow, l" + "$mod SHIFT, k, movewindow, u" + "$mod SHIFT, j, movewindow, d" - "$mainMod, b, exec, firefox" + "$mod, b, exec, firefox" ]; bindm = [ - # Move/resize windows with mainMod + LMB/RMB and dragging - "$mainMod, mouse:272, movewindow" - "$mainMod, mouse:273, resizewindow" + # Move/resize windows with mod + LMB/RMB and dragging + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" ]; bindel =[ @@ -104,7 +115,7 @@ "col.active_border" = "rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg"; "col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg"; layout = "dwindle"; - allow_tearing = false; + allow_tearing = true; }; decoration = { @@ -153,6 +164,11 @@ force_default_wallpaper = 0; }; + workspace = [ + "name: discord, monitor:DP-2, default:true" + "name: steam, monitor:DP-2, default:false" + ]; + windowrule = [ "float, file_progress" "float, confirm" @@ -164,28 +180,53 @@ "float, confirmreset" "float, title:Open File" "float, title:branchdialog" - "float,viewnior" - "float, pavucontrol-qt" "float, pavucontrol" + "move onscreen cursor 0% 0%, pavucontrol" "float, file-roller" "fullscreen, wlogout" "float, title:wlogout" "fullscreen, title:wlogout" "idleinhibit stayfocused, mpv" - ]; + "fullscreen, title:BBar" + "fullscreen, title:Remote Desktop Connection" + "norounding, class:Remote Desktop Connection" + "noshadow, class:Remote Desktop Connection" + "immediate, class:Remote Desktop Connection" + "syncfullscreen, class:Remote Desktop Connection" + "allowsinput, class:Remote Desktop Connection" + "noanim, class:Remote Desktop Connection" + "noblur, class:Remote Desktop Connection" + "noborder, class:Remote Desktop Connection" + "nodim, class:Remote Desktop Connection" + "nomaxsize, class:Remote Desktop Connection" + "minsize 3840 2160, class:Remote Desktop Connection" + ]; windowrulev2 = [ + "float, class:Vmware-view,title:VMware Horizon Client" + "size 3840 2160, class:Remote Desktop Connection" + # "float, class:Remote Desktop Connection,title:BBar" + # "float, class:Remote Desktop Connection,title:Remote Desktop Connection" + "float, class:Credential Manager UI Host,title:Windows Security" "float, title:^(Media viewer)$" # Picture in picture windows + # "float, class:pavucontrol,title:pavucontrol" # ????? "float, title:^(Picture-in-Picture)$" "pin, title:^(Picture-in-Picture)$" "float, class:^(vesktop)$,title:^(Discord Popout)$" "pin, class:^(vesktop)$,title:^(Discord Popout)$" "float, class:^(steam)$,title:^(Friends List)$" # Workspace assign - "workspace: 1, class:^(kitty)$" - "workspace: 2, class:^(firefox)$" - "workspace: 5, class:^(steam)$" - "workspace: 10, class:^(vesktop)$" + # "workspace: 1, class:^(kitty)$" + # "workspace: name:discord, class:^(firefox)$" + "workspace: name:discord, class:^(vesktop)$" + + # Steam + "float, class:^([Ss]team)$, title:^((?![Ss]team).*)$" + "workspace name:steam silent, class:^([Ss]team)$, title:^([Ss]team)$" + "tile, class:^([Ss]team)$, title:^([Ss]team)$" + + # Game Tearing??? https://wiki.hyprland.org/Configuring/Tearing/ + "immediate, class:gamescope" ]; @@ -214,9 +255,10 @@ exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = nwg-look -a - exec-once = [workspace 2 silent] firefox - exec-once = [workspace 10 silent] vesktop - exec-once = [workspace 5 silent] steam + exec-once = [workspace name:discord silent] firefox + exec-once = [workspace name:discord silent] vesktop + exec-once = [workspace name:discord silent] spotify + exec-once = [workspace name:steam silent] steam ''; }; } \ No newline at end of file diff --git a/hosts/desktop/hyprland/config/waybar/default.nix b/hosts/desktop/hyprland/config/waybar/default.nix index 391f91f..a4725e9 100644 --- a/hosts/desktop/hyprland/config/waybar/default.nix +++ b/hosts/desktop/hyprland/config/waybar/default.nix @@ -1,10 +1,12 @@ { + # https://github.com/Alexays/Waybar/wiki/Module:-Hyprland + programs.waybar = { enable = true; systemd.enable = true; settings = { mainBar = { - layer = "top"; + layer = "bottom"; position = "top"; mod = "dock"; exclusive = true; @@ -67,6 +69,7 @@ tooltip = false; format-muted = " Muted"; on-click = "pamixer -t"; + on-click-right = "pavucontrol -t 1"; on-scroll-up = "pamixer -i 5"; on-scroll-down = "pamixer -d 5"; scroll-step = 5; @@ -86,6 +89,7 @@ format-source = "🎙{volume}%"; format-source-muted = "🎙Muted"; on-click = "pamixer --default-source -t"; + on-click-right = "pavucontrol -t 2"; on-scroll-up = "pamixer --default-source -i 5"; on-scroll-down = "pamixer --default-source -d 5"; scroll-step = 5; diff --git a/hosts/desktop/hyprland/default.nix b/hosts/desktop/hyprland/default.nix index 4a5e9ae..6f8e6c0 100644 --- a/hosts/desktop/hyprland/default.nix +++ b/hosts/desktop/hyprland/default.nix @@ -1,4 +1,7 @@ { pkgs, ... }: +let + sddmTheme = "catppuccin-mocha"; +in { specialisation.hyprland.configuration = { imports = [ @@ -10,12 +13,14 @@ services = { displayManager.sddm.enable = true; displayManager.sddm.package = pkgs.kdePackages.sddm; - displayManager.sddm.theme = "catppuccin-mocha"; + displayManager.sddm.theme = sddmTheme; displayManager.defaultSession = "hyprland"; # disable plasma desktopManager.plasma6.enable = false; dbus.enable = true; + + ddccontrol.enable = true; }; programs.hyprland = { diff --git a/hosts/desktop/hyprland/environment.nix b/hosts/desktop/hyprland/environment.nix index a0eae42..fca391d 100644 --- a/hosts/desktop/hyprland/environment.nix +++ b/hosts/desktop/hyprland/environment.nix @@ -17,6 +17,7 @@ in catppuccin-sddm colloid-gtk-theme colloid-icon-theme + ddcutil dunst glib gnome-disk-utility @@ -31,6 +32,7 @@ in nwg-look pamixer papirus-folders + pavucontrol playerctl polkit polkit_gnome @@ -41,6 +43,7 @@ in waybarWeatherScript wayland-protocols wayland-utils + wev wl-clipboard wlogout wlroots diff --git a/hosts/desktop/hyprland/home.nix b/hosts/desktop/hyprland/home.nix index 23eb35b..1fee0d4 100644 --- a/hosts/desktop/hyprland/home.nix +++ b/hosts/desktop/hyprland/home.nix @@ -1,4 +1,21 @@ { pkgs, ... }: +let + wallpaper = "/home/matt/.config/wallpapers/wall.png"; + cursorTheme = "macOS-Monterey"; + cursorThemePkg = pkgs.apple-cursor; + cursorSize = 24; + gtkThemeSize = "compact"; + gtkThemeAccent = "blue"; + gtkThemeVariant = "macchiato"; + gtkTheme = "catppuccin-${gtkThemeVariant}-${gtkThemeAccent}-${gtkThemeSize}"; + gtkThemePkg = pkgs.catppuccin-gtk.override { + size = gtkThemeSize; + accents = [ gtkThemeAccent ]; + variant = gtkThemeVariant; + }; + iconTheme = "Colloid-dark"; # Colloid, Colloid-light, Colloid-dark + iconThemePkg = pkgs.colloid-icon-theme; +in { imports = [ ./config.nix @@ -14,10 +31,10 @@ hyprpaper = { enable = true; settings = { - preload = [ "~/.config/wallpapers/wall.png" ]; + preload = [ wallpaper ]; wallpaper = [ - "DP-1, ~/.config/wallpapers/wall.png" - "DP-2, ~/.config/wallpapers/wall.png" + "DP-1, ${wallpaper}" + "DP-2, ${wallpaper}" ]; splash = false; }; @@ -27,13 +44,29 @@ enable = true; settings = { general = { - after_sleep_cmd = "hyprctl dispatch dpms on"; + before_sleep_cmd = "loginctl lock-session"; # lock before suspend. + after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display. ignore_dbus_inhibit = false; - lock_cmd = "hyprlock"; + lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances. }; listener = [ + # { + # timeout = 300; # 5min + # on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor. + # on-resume = "brightnessctl -r"; # monitor backlight restore. + # } { - timeout = 3600; + timeout = 900; # 15 min + on-timeout = "loginctl lock-session"; # lock screen when timeout has passed + } + { + timeout = 930; # 15.5 min + on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed + on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired. + } + { + timeout = 3600; # 1hr + on-timeout = "systemctl suspend"; # suspend pc } ]; }; @@ -46,7 +79,7 @@ background = [ { monitor = ""; - path = "/home/matt/.config/wallpapers/wall.png"; # supports png, jpg, webp (no animations, though) + path = wallpaper; # supports png, jpg, webp (no animations, though) color = "rgba(25, 20, 20, 1.0)"; # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations @@ -63,12 +96,13 @@ { size = "200, 50"; position = "0, -80"; - monitor = ""; + monitor = "DP-1"; dots_center = true; - fade_on_empty = false; + fade_on_empty = true; font_color = "rgb(202, 211, 245)"; inner_color = "rgb(91, 96, 120)"; outer_color = "rgb(24, 25, 38)"; + bothlock_color = -1; outline_thickness = 5; placeholder_text = ''Password...''; shadow_passes = 2; @@ -94,9 +128,9 @@ # WLR_NO_HARDWARE_CURSORS = "1"; CLUTTER_BACKEND = "wayland"; # WLR_RENDERER = "vulkan"; - XCURSOR_THEME = "macOS-Monterey"; - XCURSOR_SIZE = "24"; - GTK_THEME="catppuccin-macchiato-blue-compact"; + XCURSOR_THEME = cursorTheme; + XCURSOR_SIZE = cursorSize; + GTK_THEME = gtkTheme; XDG_CURRENT_DESKTOP = "Hyprland"; XDG_SESSION_DESKTOP = "Hyprland"; XDG_SESSION_TYPE = "wayland"; @@ -110,31 +144,27 @@ home.pointerCursor = { gtk.enable = true; - package = pkgs.apple-cursor; - name = "macOS-Monterey"; - size = 24; + package = cursorThemePkg; + name = cursorTheme; + size = cursorSize; }; gtk = { enable = true; cursorTheme = { - name = "macOS-Monterey"; # macOS-[BigSur, Monterey]-[ , White, White-Windows, Windows] - package = pkgs.apple-cursor; + name = cursorTheme; # macOS-[BigSur, Monterey]-[ , White, White-Windows, Windows] + package = cursorThemePkg; }; theme = { - name = "catppuccin-macchiato-blue-compact"; - package = pkgs.catppuccin-gtk.override { - size = "compact"; - accents = ["blue"]; - variant = "macchiato"; - }; + name = gtkTheme; + package = gtkThemePkg; }; iconTheme = { - name = "Colloid-dark"; # Colloid, Colloid-light, Colloid-dark - package = pkgs.colloid-icon-theme; + name = iconTheme; + package = iconThemePkg; }; gtk3.extraConfig = { diff --git a/hosts/nas/apps.nix b/hosts/nas/apps.nix index b40045d..224d5c0 100644 --- a/hosts/nas/apps.nix +++ b/hosts/nas/apps.nix @@ -66,5 +66,8 @@ tdarr.enable = true; vscode.enable = true; + + wireguard.enable = true; + wireguard.configPath = "/media/nas/ssd/nix-app-data/wireguard/sidestore"; }; } diff --git a/hosts/nas/hardware-configuration.nix b/hosts/nas/hardware-configuration.nix index 4268f13..31bfeff 100644 --- a/hosts/nas/hardware-configuration.nix +++ b/hosts/nas/hardware-configuration.nix @@ -29,7 +29,7 @@ fsType = "tmpfs"; options = [ "defaults" - "size=32G" + "size=256G" "mode=755" ]; }; diff --git a/modules/apps/nextcloud/default.nix b/modules/apps/nextcloud/default.nix index c5de897..bf93257 100644 --- a/modules/apps/nextcloud/default.nix +++ b/modules/apps/nextcloud/default.nix @@ -21,6 +21,7 @@ in volumes = [ "${cfg.configPath}:/config" "${cfg.dataPath}:/data" + "${cfg.tmpPath}:/data-tmp" "${cfg.redisSock}:/var/redis/redis.sock" ]; environment = { diff --git a/modules/apps/nextcloud/options.nix b/modules/apps/nextcloud/options.nix index 4417b2c..e130966 100644 --- a/modules/apps/nextcloud/options.nix +++ b/modules/apps/nextcloud/options.nix @@ -39,6 +39,11 @@ with lib; default = "/media/nas/main/nextcloud"; }; + tmpPath = mkOption { + type = types.str; + default = "/media/nas/ssd/nix-app-data/tmp"; + }; + redisSock = mkOption { type = types.str; default = ""; diff --git a/modules/apps/wireguard/default.nix b/modules/apps/wireguard/default.nix new file mode 100644 index 0000000..4c1a07a --- /dev/null +++ b/modules/apps/wireguard/default.nix @@ -0,0 +1,33 @@ +{ + lib, + pkgs, + config, + ... +}: +with lib; +let + cfg = config.nas-apps.wireguard; +in +{ + imports = [ ./options.nix ]; + + config = mkIf cfg.enable { + virtualisation.oci-containers.containers."${cfg.name}" = { + autoStart = cfg.autoStart; + image = cfg.image; + ports = [ "${cfg.port}:51820/udp" ]; + extraOptions = [ + "--cap-add=NET_ADMIN" + "--sysctl=\"net.ipv4.conf.all.src_valid_mark=1\"" + ]; + volumes = [ + "${cfg.configPath}:/config" + ]; + environment = { + PUID = cfg.puid; + PGID = cfg.pgid; + TZ = cfg.timeZone; + }; + }; + }; +} diff --git a/modules/apps/wireguard/options.nix b/modules/apps/wireguard/options.nix new file mode 100644 index 0000000..a0028a6 --- /dev/null +++ b/modules/apps/wireguard/options.nix @@ -0,0 +1,47 @@ +{ lib, ... }: +with lib; +{ + options.nas-apps.wireguard = { + enable = mkEnableOption "wireguard docker service"; + + autoStart = mkOption { + type = types.bool; + default = true; + }; + + port = mkOption { + type = types.str; + default = "51820"; + }; + + name = mkOption { + type = types.str; + default = "wireguard"; + }; + + image = mkOption { + type = types.str; + default = "lscr.io/linuxserver/wireguard"; + }; + + configPath = mkOption { + type = types.str; + default = "/media/nas/ssd/nix-app-data/wireguard"; + }; + + puid = mkOption { + type = types.str; + default = "911"; + }; + + pgid = mkOption { + type = types.str; + default = "1000"; + }; + + timeZone = mkOption { + type = types.str; + default = "America/Chicago"; + }; + }; +} diff --git a/modules/default.nix b/modules/default.nix index 8f5d858..8e26b74 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -22,5 +22,6 @@ ./apps/swag ./apps/tdarr ./apps/vscode + ./apps/wireguard ]; } diff --git a/share/gaming/default.nix b/share/gaming/default.nix index af22b32..f2a2bcd 100644 --- a/share/gaming/default.nix +++ b/share/gaming/default.nix @@ -22,7 +22,19 @@ in remotePlay.openFirewall = true; # Open ports in the firewall for Source Dedicated Server dedicatedServer.openFirewall = true; - }; + + gamescopeSession = { + enable = true; + args = [ + "-f" + "-H 2160" + "-W 3840" + "-r 240" + "--hdr-enabled" + "--adaptive-sync" + ]; + }; + };#"gamescope -f -H 2160 -W 3840 -r 240 --adaptive-sync --hdr-enabled # Hardware configs hardware = {