diff --git a/README.md b/README.md index 4521a54..3bc2d5c 100755 --- a/README.md +++ b/README.md @@ -17,7 +17,8 @@ each host should have these files: ## todo - move common config such as bootloader and networking settings to [`default.nix`](./default.nix) or some other common spot - - multi architecture configuration + - multi architecture configuration ([nix-systems](https://github.com/nix-systems/nix-systems)?) - bitwarden - - qt themes? - - sddm cursors no work :( \ No newline at end of file + - sddm cursors no work :( + - setup editorconfig everywhere + - divide steam and gamemode? \ No newline at end of file diff --git a/config/dunst.conf b/config/dunst.conf index 328b280..12d9efc 100644 --- a/config/dunst.conf +++ b/config/dunst.conf @@ -3,7 +3,7 @@ frame_color = "#89B4FA" separator_color= frame - follow = none + follow = "mouse" width = 300 height = 145 origin = top-right diff --git a/flake.lock b/flake.lock index 377c687..6cc536e 100644 --- a/flake.lock +++ b/flake.lock @@ -34,6 +34,22 @@ "type": "github" } }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "hardware": { "locked": { "lastModified": 1711352745, @@ -71,7 +87,10 @@ }, "hyprcursor": { "inputs": { - "hyprlang": "hyprlang_2", + "hyprlang": [ + "hyprland", + "hyprlang" + ], "nixpkgs": [ "hyprland", "nixpkgs" @@ -82,11 +101,11 @@ ] }, "locked": { - "lastModified": 1711466786, - "narHash": "sha256-sArxGyUBiCA1in+q6t0QqT+ZJiZ1PyBp7cNPKLmREM0=", + "lastModified": 1713612213, + "narHash": "sha256-zJboXgWNpNhKyNF8H/3UYzWkx7w00TOCGKi3cwi+tsw=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "d3876f34779cc03ee51e4aafc0d00a4f187c7544", + "rev": "cab4746180f210a3c1dd3d53e45c510e309e90e1", "type": "github" }, "original": { @@ -99,14 +118,14 @@ "inputs": { "hyprlang": "hyprlang", "nixpkgs": "nixpkgs_2", - "systems": "systems" + "systems": "systems_2" }, "locked": { - "lastModified": 1710180874, - "narHash": "sha256-ZSn3wXQuRz36Ta/L+UCFKuUVG6QpwK2QmRkPjpQprU4=", + "lastModified": 1713472482, + "narHash": "sha256-7Ft5WZTMIjXOGgRCf31DZBwK6RK8xkeKlD5vFXz3gII=", "owner": "hyprwm", "repo": "hypridle", - "rev": "4395339a2dc410bcf49f3e24f9ed3024fdb25b0a", + "rev": "7cff4581a3753154fc5b41f39a098fad49b777b1", "type": "github" }, "original": { @@ -119,18 +138,19 @@ "inputs": { "hyprcursor": "hyprcursor", "hyprland-protocols": "hyprland-protocols", - "hyprlang": "hyprlang_3", + "hyprlang": "hyprlang_2", + "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs_3", "systems": "systems_3", "wlroots": "wlroots", "xdph": "xdph" }, "locked": { - "lastModified": 1711673030, - "narHash": "sha256-atpS9c2LR56DIURlDLmuKHGmVQj9Xky2aETGhdTwMKg=", + "lastModified": 1714084064, + "narHash": "sha256-WUEFYyOzgWOr6pK2/1fCohUUF77wuj1zIeP8jvPL0LU=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "fcd9d77b642c0cd45cae61cf10ed1924f2e7945b", + "rev": "1d40af64d352bd5a87c7d53a52707fc5cfc6940e", "type": "github" }, "original": { @@ -185,14 +205,15 @@ "nixpkgs": [ "hypridle", "nixpkgs" - ] + ], + "systems": "systems" }, "locked": { - "lastModified": 1708212860, - "narHash": "sha256-nW3Zrhh9RJcMTvOcXAaKADnJM/g6tDf3121lJtTHnYo=", + "lastModified": 1713121246, + "narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "11d5ccda071c153dfdc18ef65338956a51cef96a", + "rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706", "type": "github" }, "original": { @@ -205,17 +226,19 @@ "inputs": { "nixpkgs": [ "hyprland", - "hyprcursor", "nixpkgs" ], - "systems": "systems_2" + "systems": [ + "hyprland", + "systems" + ] }, "locked": { - "lastModified": 1709914708, - "narHash": "sha256-bR4o3mynoTa1Wi4ZTjbnsZ6iqVcPGriXp56bZh5UFTk=", + "lastModified": 1713121246, + "narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "a685493fdbeec01ca8ccdf1f3655c044a8ce2fe2", + "rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706", "type": "github" }, "original": { @@ -227,20 +250,17 @@ "hyprlang_3": { "inputs": { "nixpkgs": [ - "hyprland", + "hyprlock", "nixpkgs" ], - "systems": [ - "hyprland", - "systems" - ] + "systems": "systems_4" }, "locked": { - "lastModified": 1711250455, - "narHash": "sha256-LSq1ZsTpeD7xsqvlsepDEelWRDtAhqwetp6PusHXJRo=", + "lastModified": 1713121246, + "narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "b3e430f81f3364c5dd1a3cc9995706a4799eb3fa", + "rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706", "type": "github" }, "original": { @@ -250,28 +270,6 @@ } }, "hyprlang_4": { - "inputs": { - "nixpkgs": [ - "hyprlock", - "nixpkgs" - ], - "systems": "systems_4" - }, - "locked": { - "lastModified": 1711250455, - "narHash": "sha256-LSq1ZsTpeD7xsqvlsepDEelWRDtAhqwetp6PusHXJRo=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "b3e430f81f3364c5dd1a3cc9995706a4799eb3fa", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprlang_5": { "inputs": { "nixpkgs": "nixpkgs_5", "systems": "systems_6" @@ -292,16 +290,16 @@ }, "hyprlock": { "inputs": { - "hyprlang": "hyprlang_4", + "hyprlang": "hyprlang_3", "nixpkgs": "nixpkgs_4", "systems": "systems_5" }, "locked": { - "lastModified": 1711622429, - "narHash": "sha256-JwHbbmAzX1Kfq1XAs06lKbk2TZL7mH/yLczG4BaiuTs=", + "lastModified": 1713978374, + "narHash": "sha256-jla5Wo0Qt3NEnD0OjNj85BGw0pR4Zlz5uy8AqHH7tuE=", "owner": "hyprwm", "repo": "hyprlock", - "rev": "7f8c9b6addce5174af78acaf1eb1d726fc4133b5", + "rev": "415262065fff0a04b229cd00165f346a86a0a73a", "type": "github" }, "original": { @@ -312,16 +310,16 @@ }, "hyprpaper": { "inputs": { - "hyprlang": "hyprlang_5", + "hyprlang": "hyprlang_4", "nixpkgs": "nixpkgs_6", "systems": "systems_7" }, "locked": { - "lastModified": 1711556036, - "narHash": "sha256-z+ZgMjGC8540k3Z6Z49ZnEvbWyLGXtWPSCagMOrmuXk=", + "lastModified": 1712919696, + "narHash": "sha256-93zNQy4LGFP5h/GrQJctd8cPE0VdCDsWigTOx2effrE=", "owner": "hyprwm", "repo": "hyprpaper", - "rev": "5838c90cd29374935930281f62bc131d8bcf2295", + "rev": "02ee7ff3bbd9cba72f26be7b09dde4a89fc31c21", "type": "github" }, "original": { @@ -330,6 +328,31 @@ "type": "github" } }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1713989318, + "narHash": "sha256-WSsEQQxZQ+bsAWRhi1iXvP8sxgRyNtY3X1V3CfFdP5Q=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "1cfe2d26a82ce794fd33ec06fa022e68501c5a45", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "nix-colors": { "inputs": { "base16-schemes": "base16-schemes", @@ -382,11 +405,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1708475490, - "narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=", + "lastModified": 1712963716, + "narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0e74ca98a74bc7270d28838369593635a5db3260", + "rev": "cfd6b5fc90b15709b780a5a1619695a88505a176", "type": "github" }, "original": { @@ -398,11 +421,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1711523803, - "narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2726f127c15a4cc9810843b96cad73c7eb39e443", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { @@ -414,11 +437,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1711523803, - "narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=", + "lastModified": 1712963716, + "narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2726f127c15a4cc9810843b96cad73c7eb39e443", + "rev": "cfd6b5fc90b15709b780a5a1619695a88505a176", "type": "github" }, "original": { @@ -476,6 +499,22 @@ "type": "github" } }, + "nixpkgs_8": { + "locked": { + "lastModified": 1711163522, + "narHash": "sha256-YN/Ciidm+A0fmJPWlHBGvVkcarYWSC+s3NTPk/P+q3c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "44d0940ea560dee511026a53f0e2e2cde489b4d4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "catppuccin-vsc": "catppuccin-vsc", @@ -488,6 +527,7 @@ "hyprpaper": "hyprpaper", "nix-colors": "nix-colors", "nixpkgs": "nixpkgs_7", + "waybar": "waybar", "waybar-catppuccin": "waybar-catppuccin" } }, @@ -596,6 +636,25 @@ "type": "github" } }, + "waybar": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs_8" + }, + "locked": { + "lastModified": 1714680561, + "narHash": "sha256-ov7v4OaiMW6gylMFTjKXXtoxrgAjtOTHa09oFmu3B3s=", + "owner": "Alexays", + "repo": "Waybar", + "rev": "0b6476da32d181ee6b2cabdc5205a46a90521a75", + "type": "github" + }, + "original": { + "owner": "Alexays", + "repo": "Waybar", + "type": "github" + } + }, "waybar-catppuccin": { "flake": false, "locked": { @@ -615,20 +674,18 @@ "wlroots": { "flake": false, "locked": { - "host": "gitlab.freedesktop.org", - "lastModified": 1709983277, - "narHash": "sha256-wXWIJLd4F2JZeMaihWVDW/yYXCLEC8OpeNJZg9a9ly8=", - "owner": "wlroots", - "repo": "wlroots", - "rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", - "type": "gitlab" + "lastModified": 1713731601, + "narHash": "sha256-bdcKdtLkusvv85DNuJsajZLFeq7bXp+x5AGP1Sd4wD8=", + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea", + "type": "github" }, "original": { - "host": "gitlab.freedesktop.org", - "owner": "wlroots", - "repo": "wlroots", - "rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", - "type": "gitlab" + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea", + "type": "github" } }, "xdph": { @@ -651,11 +708,11 @@ ] }, "locked": { - "lastModified": 1709299639, - "narHash": "sha256-jYqJM5khksLIbqSxCLUUcqEgI+O2LdlSlcMEBs39CAU=", + "lastModified": 1713724432, + "narHash": "sha256-dtU1y4oj/0Y42oauzm93ucFg1AoqETnQ21bmXTIUng0=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "2d2fb547178ec025da643db57d40a971507b82fe", + "rev": "9ace6f969ce495185df34cc6254fb9d297765478", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 45d9f7d..6037fbd 100644 --- a/flake.nix +++ b/flake.nix @@ -10,6 +10,8 @@ hardware.url = "github:nixos/nixos-hardware"; nix-colors.url = "github:misterio77/nix-colors"; + waybar.url = "github:Alexays/Waybar"; + hyprland.url = "github:hyprwm/Hyprland"; hyprlock.url = "github:hyprwm/hyprlock"; hypridle.url = "github:hyprwm/hypridle"; diff --git a/hosts/goopnet-interface/default.nix b/hosts/goopnet-interface/default.nix index 66f33f3..9cb92c5 100755 --- a/hosts/goopnet-interface/default.nix +++ b/hosts/goopnet-interface/default.nix @@ -19,18 +19,19 @@ # apps firefox mpv qalculate-gtk # misc - bat file which tree prismlauncher yt-dlp + bat file which tree prismlauncher yt-dlp ffmpeg gpu-screen-recorder gpu-screen-recorder-gtk ] ++ (with pkgs.my; [ # none yet ]) ++ (with pkgs.gnome; [ # yay gnomeware!!!!!!!!!!!!!! yum - nautilus gnome-disk-utility pkgs.gnome-text-editor file-roller gnome-system-monitor loupe + nautilus gnome-disk-utility pkgs.gnome-text-editor pkgs.baobab file-roller gnome-system-monitor loupe ]); modules = { security.useDoas = true; hardware = { + bluetooth.enable = true; pipewire.enable = true; }; dev = { @@ -44,6 +45,7 @@ hypridle.enable = true; hyprpaper.enable = true; + polkit-gnome.enable = true; dunst.enable = true; rofi.enable = true; nwg-drawer.enable = true; @@ -64,7 +66,7 @@ dev.git.enable = true; # distractions distractions.discord.enable = true; - distractions.discord.armcord = true; + distractions.discord.vesktop = true; distractions.steam.enable = true; }; }; diff --git a/hosts/goopnet-interface/hardware.nix b/hosts/goopnet-interface/hardware.nix index e55176b..a48c94c 100755 --- a/hosts/goopnet-interface/hardware.nix +++ b/hosts/goopnet-interface/hardware.nix @@ -21,8 +21,7 @@ efi.canTouchEfiVariables = true; }; - # nvidia - # !! you should keep this enabled if you use wayland !! + # nvidia driver services.xserver.videoDrivers = [ "nvidia" ]; hardware.nvidia = { @@ -31,11 +30,13 @@ modesetting.enable = true; powerManagement.enable = true; - - # this program is (respectfully) a pile of dogshit and is just bloat if using wayland - nvidiaSettings = false; }; + boot.kernelParams = [ + # use experimental nvidia supplied framebuffer + "nvidia-drm.fbdev=1" + ]; + # VA-API hardware.opengl = { extraPackages = with pkgs; [ diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index 84bd37b..d595309 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -13,12 +13,6 @@ in { config = mkMerge [ { - qt = { - enable = true; - platformTheme = "gnome"; - style = "adwaita-dark"; - }; - modules.desktop.fonts.enable = true; modules.desktop.fonts.baseFonts = true; } @@ -33,8 +27,6 @@ in { XDG_SESSION_TYPE = "wayland"; SDL_VIDEODRIVER = "wayland"; CLUTTER_BACKEND = "wayland"; - # this fixes cursors on nvidia, maybe move all nvidia stuff to a module? or put this in hardware - WLR_NO_HARDWARE_CURSORS = "1"; }; }) (mkIf (cfg.envProto == "x11") { diff --git a/modules/desktop/fonts.nix b/modules/desktop/fonts.nix index 6fa6fd9..f170546 100644 --- a/modules/desktop/fonts.nix +++ b/modules/desktop/fonts.nix @@ -89,7 +89,6 @@ in { }; hm.gtk.enable = true; - # not the best way of writing this (imagine if `name` was named `family`...) hm.gtk.font = with cfg.fonts.sansSerif; { package = package; name = family; diff --git a/modules/desktop/hypridle.nix b/modules/desktop/hypridle.nix index 84c7d76..231dd50 100644 --- a/modules/desktop/hypridle.nix +++ b/modules/desktop/hypridle.nix @@ -14,20 +14,18 @@ in { }; config = mkIf cfg.enable { - hm.services.hypridle = { + hm.services.hypridle = let + hyprctl = "${config.modules.desktop.hyprland.package}/bin/hyprctl"; + in { enable = true; package = cfg.package; - # the `date` command doesn't work if we just call hyprlock. Huh - # workaround is telling hyprctl to dispatch to execute it - # hacky, but i couldn't care less at the moment - # TODO: change this when/if it gets patched - lockCmd = "${config.modules.desktop.hyprland.package}/bin/hyprctl dispatch exec ${lib.getExe config.modules.desktop.hyprlock.package}"; - unlockCmd = "pkill -USR1 hyprlock"; + lockCmd = "${pkgs.procps}/bin/pidof hyprlock || ${hyprctl} dispatch exec ${lib.getExe config.modules.desktop.hyprlock.package}"; + unlockCmd = "${pkgs.procps}/bin/pkill -USR1 hyprlock"; - listeners = let - hyprctl = "${config.modules.desktop.hyprland.package}/bin/hyprctl"; - in [ + beforeSleepCmd = "${pkgs.systemd}/bin/loginctl lock-session"; + + listeners = [ { timeout = 90; # 1.5 min onTimeout = "${hyprctl} dispatch dpms off"; # turn off screen @@ -35,11 +33,11 @@ in { } { timeout = 60 * 2; # 2 min - onTimeout = "loginctl lock-session"; # lock computer + onTimeout = "${pkgs.systemd}/bin/loginctl lock-session"; # lock computer } { - timeout = 60 * 30; # 15 min - onTimeout = "systemctl suspend"; # sleep/suspend + timeout = 60 * 30; # 30 min + onTimeout = "${pkgs.systemd}/bin/systemctl suspend"; # sleep/suspend } ]; }; diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix index 61be900..f37a1ba 100644 --- a/modules/desktop/hyprland.nix +++ b/modules/desktop/hyprland.nix @@ -118,18 +118,27 @@ in { windowrulev2 = [ # common popups "float, class:file-roller" + "size 1100 730, class:file-roller" "float, class:org.gnome.Loupe" + "size 1100 730, class:org.gnome.Loupe" "float, initialTitle:^Open Folder$" + "size 1100 730, initialTitle:^Open Folder$" "float, initialTitle:^Open File$" + "size 1100 730, initialTitle:^Open File$" + "float, initialTitle:^Open Files$" + "size 1100 730, initialTitle:^Open Files$" + "float, initialTitle:^Save As$" + "size 1100 730, initialTitle:^Save As$" # fix focus "stayfocused, class:^pinentry-" + "stayfocused, class:^polkit-" "stayfocused, class:^rofi-" # workspace moving "workspace 1, class:^firefox" "workspace 2, class:code-url-handler" - "workspace 4, class:ArmCord" + "workspace 4, class:vesktop" ]; blurls = [ diff --git a/modules/desktop/hyprlock.nix b/modules/desktop/hyprlock.nix index 6120357..921aeae 100644 --- a/modules/desktop/hyprlock.nix +++ b/modules/desktop/hyprlock.nix @@ -1,4 +1,4 @@ -{ lib, config, inputs, system, ... }: +{ lib, config, pkgs, inputs, system, ... }: with lib; let @@ -15,17 +15,16 @@ in { config = mkIf cfg.enable { security.pam.services.hyprlock.text = "auth include login"; - powerManagement.resumeCommands = '' - ${cfg.package} - ''; hm.programs.hyprlock = with config.colorScheme.palette; { enable = true; package = cfg.package; + general = { hide_cursor = false; no_fade_in = true; no_fade_out = true; }; + backgrounds = [ { path = toString ../../assets/lockscreen.png; @@ -33,6 +32,7 @@ in { blur_size = 6; } ]; + labels = [ { text = "cmd[update:1000] echo \"$(date +'%H:%M')\""; @@ -49,6 +49,7 @@ in { position = { x = 0; y = 10; }; } ]; + input-fields = [ { size = { width = 300; height = 28; }; diff --git a/modules/desktop/hyprpaper.nix b/modules/desktop/hyprpaper.nix index 4c79d38..8e00d79 100644 --- a/modules/desktop/hyprpaper.nix +++ b/modules/desktop/hyprpaper.nix @@ -9,7 +9,7 @@ in { package = mkOption { type = types.package; default = inputs.hyprpaper.packages.${system}.hyprpaper; - example = "pkgs.hyperpaper"; + example = "pkgs.hyprpaper"; }; }; diff --git a/modules/desktop/polkit-gnome.nix b/modules/desktop/polkit-gnome.nix new file mode 100644 index 0000000..818395d --- /dev/null +++ b/modules/desktop/polkit-gnome.nix @@ -0,0 +1,28 @@ +{ lib, config, pkgs, ... }: + +with lib; +let + cfg = config.modules.desktop.polkit-gnome; +in { + options.modules.desktop.polkit-gnome = { + enable = mkEnableOption "Enable polkit-gnome, a simple polkit agent"; + }; + + config = mkIf cfg.enable { + systemd.user.services.polkit-gnome-authentication-agent-1 = { + description = "polkit-gnome-authentication-agent-1"; + + wantedBy = [ "graphical-session.target" ]; + wants = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; + }; + }; + }; +} diff --git a/modules/desktop/sddm.nix b/modules/desktop/sddm.nix index 5d7c31a..1ab2038 100644 --- a/modules/desktop/sddm.nix +++ b/modules/desktop/sddm.nix @@ -10,6 +10,7 @@ in { config = mkIf cfg.enable { services.xserver.enable = true; # this is needed, unfortunately! + services.xserver.excludePackages = [ pkgs.xterm ]; # prevents xterm on wayland and x environment.systemPackages = with pkgs; [ config.modules.desktop.themes.sddmTheme.package libsForQt5.qt5.qtsvg diff --git a/modules/desktop/themes/default.nix b/modules/desktop/themes/default.nix index a4692b3..85f48dc 100644 --- a/modules/desktop/themes/default.nix +++ b/modules/desktop/themes/default.nix @@ -67,6 +67,19 @@ in { theme = cfg.gtkTheme; }; + hm.qt = { + enable = true; + platformTheme = "gtk"; + style.name = "gtk2"; + }; + + hm.home.pointerCursor = { + gtk.enable = true; + x11.enable = true; + name = cfg.cursorTheme.name; + package = cfg.cursorTheme.package; + }; + hm.services.dunst.iconTheme = { name = cfg.iconTheme.name; package = cfg.iconTheme.package; diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix index eaba66f..e91dd5a 100644 --- a/modules/desktop/waybar.nix +++ b/modules/desktop/waybar.nix @@ -1,17 +1,23 @@ -{ lib, config, pkgs, inputs, ... }: +{ lib, config, pkgs, inputs, system, ... }: with lib; let cfg = config.modules.desktop.waybar; in { options.modules.desktop.waybar = { - enable = mkEnableOption "Enable Waybar, a lightweight desktop environment based on GTK+"; + enable = mkEnableOption "Enable Waybar, a highly customizable wayland bar for wlroots compositors."; + package = mkOption { + type = types.package; + default = inputs.waybar.packages.${system}.default; + example = "pkgs.waybar"; + }; }; config = mkIf cfg.enable { - hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe pkgs.waybar}" ]; + hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe cfg.package}" ]; hm.programs.waybar = { enable = true; + package = cfg.package; style = builtins.concatStringsSep "\n" [ "@import \"${inputs.waybar-catppuccin}/themes/mocha.css\";" (lib.readFile ../../config/waybar.css) @@ -129,8 +135,7 @@ in { "(\\S+\\.zig\\s.*)" = " $1"; "(\\S+\\.rs\\s.*)" = " $1"; "(\\S+\\.hs\\s.*)" = " $1"; - ".*Discord | (.*) | .*" = "$1 - ArmCord"; - #"(.*) - ArmCord" = "$1"; + ".*Discord \\| (.*)" = "$1"; }; separate-outputs = true; }; diff --git a/modules/hardware/bluetooth.nix b/modules/hardware/bluetooth.nix new file mode 100644 index 0000000..e121d64 --- /dev/null +++ b/modules/hardware/bluetooth.nix @@ -0,0 +1,19 @@ +{ pkgs, config, lib, ... }: + +with lib; +let + cfg = config.modules.hardware.bluetooth; +in { + options.modules.hardware.bluetooth = { + enable = mkEnableOption "Enable bluetooth, a short-range communication technology"; + }; + + config = mkIf cfg.enable { + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + + # frontend + services.blueman.enable = true; + hm.services.blueman-applet.enable = true; + }; +} diff --git a/modules/software/dev/git.nix b/modules/software/dev/git.nix index 7a218a5..0ff90a9 100644 --- a/modules/software/dev/git.nix +++ b/modules/software/dev/git.nix @@ -33,16 +33,7 @@ in { ]; aliases = { - ranked-authors = "!git authors | sort | uniq -c | sort -n"; - emails = '' - !git log --format="%aE" | sort -u - ''; - email-domains = '' - !git log --format="%aE" | awk -F'@' '{print $2}' | sort -u - ''; - graph = '' - log --graph --color --pretty=format:"%C(yellow)%H%C(green)%d%C(reset)%n%x20%cd%n%x20%cn%x20(%ce)%n%x20%s%n" - ''; + graph = ''log --graph --color --pretty=format:"%C(yellow)%H%C(green)%d%C(reset)%n%x20%cd%n%x20%cn%x20(%ce)%n%x20%s%n"''; }; extraConfig = { diff --git a/modules/software/distractions/discord.nix b/modules/software/distractions/discord.nix index 8dd2020..1c1c8d9 100644 --- a/modules/software/distractions/discord.nix +++ b/modules/software/distractions/discord.nix @@ -6,11 +6,11 @@ let in { options.modules.software.distractions.discord = { enable = mkEnableOption "Enable discord, a social messaging app"; - armcord = mkEnableOption "Use armcord, an alternative discord client."; + vesktop = mkEnableOption "Use vesktop, an alternative discord client."; }; config = mkIf cfg.enable (mkMerge [ - (mkIf (!cfg.armcord) { + (mkIf (!cfg.vesktop) { user.packages = let flags = [ @@ -36,8 +36,8 @@ in { }); in [ discord ]; }) - (mkIf cfg.armcord { - user.packages = with pkgs; [ armcord ]; + (mkIf cfg.vesktop { + user.packages = with pkgs; [ vesktop ]; }) ]); } \ No newline at end of file diff --git a/modules/software/distractions/steam.nix b/modules/software/distractions/steam.nix index 7a21932..237fc5f 100644 --- a/modules/software/distractions/steam.nix +++ b/modules/software/distractions/steam.nix @@ -10,11 +10,21 @@ in { config = mkIf cfg.enable { programs.steam.enable = true; + + # optimize linux system performance on demand + # https://github.com/FeralInteractive/gamemode + user.extraGroups = [ "gamemode" ]; programs.gamemode = { enable = true; enableRenice = true; - settings = {}; + settings = { + custom = { + start = "${pkgs.libnotify}/bin/notify-send --app-name GameMode 'GameMode started'"; + end = "${pkgs.libnotify}/bin/notify-send --app-name GameMode 'GameMode ended'"; + }; + }; }; + programs.gamescope = { enable = true; capSysNice = true; @@ -23,6 +33,7 @@ in { enable = true; args = [ "-W 1920" "-H 1080" "-r 60" "--expose-wayland" "-e" ]; }; + user.packages = [ pkgs.protontricks pkgs.steam-run ]; }; } \ No newline at end of file diff --git a/modules/user.nix b/modules/user.nix index 970ac2d..03170be 100644 --- a/modules/user.nix +++ b/modules/user.nix @@ -33,5 +33,11 @@ with lib.my; trusted-users = users; allowed-users = users; }; + + users.users.root = { + packages = [ pkgs.shadow ]; + shell = pkgs.shadow; + hashedPassword = "!"; + }; }; }