diff --git a/.zed/settings.json b/.zed/settings.json
new file mode 100644
index 00000000..86370a1e
--- /dev/null
+++ b/.zed/settings.json
@@ -0,0 +1,23 @@
+// Folder-specific settings
+//
+// For a full list of overridable settings, and general information on folder-specific settings,
+// see the documentation: https://zed.dev/docs/configuring-zed#settings-files
+{
+ "lsp": {
+ "nixd": {
+ "settings": {
+ "options": {
+ "nixos": {
+ "expr": "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.zaphod.options"
+ },
+ "home-manager": {
+ "expr": "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.zaphod.options.home-manager.users.type.getSubOptions []"
+ },
+ "flake-parts": {
+ "expr": "(builtins.getFlake (builtins.toString ./.)).debug.options"
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/flake.lock b/flake.lock
index 848b3747..0602bb60 100644
--- a/flake.lock
+++ b/flake.lock
@@ -322,6 +322,24 @@
"type": "github"
}
},
+ "flake-utils_3": {
+ "inputs": {
+ "systems": "systems_3"
+ },
+ "locked": {
+ "lastModified": 1731533236,
+ "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
"git-hooks": {
"inputs": {
"flake-compat": [
@@ -782,6 +800,22 @@
"type": "github"
}
},
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1759036355,
+ "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
"root": {
"inputs": {
"agenix": "agenix",
@@ -808,7 +842,8 @@
"nixpkgs-stalwart-fix": "nixpkgs-stalwart-fix",
"stable": "stable",
"systems": "systems",
- "tangled": "tangled"
+ "tangled": "tangled",
+ "vicinae": "vicinae"
}
},
"sqlite-lib-src": {
@@ -870,6 +905,21 @@
"type": "github"
}
},
+ "systems_3": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
"tangled": {
"inputs": {
"flake-compat": "flake-compat_2",
@@ -896,6 +946,25 @@
"type": "git",
"url": "https://tangled.org/@tangled.org/core"
}
+ },
+ "vicinae": {
+ "inputs": {
+ "flake-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_4"
+ },
+ "locked": {
+ "lastModified": 1759946048,
+ "narHash": "sha256-cyL+LxzEQNPJ7s9y4g1HfUlgoIS0YzcAlyXP6nrKBnU=",
+ "owner": "vicinaehq",
+ "repo": "vicinae",
+ "rev": "96e7405c95f7967ed55689a1d563a10f5e1f24e7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "vicinaehq",
+ "repo": "vicinae",
+ "type": "github"
+ }
}
},
"root": "root",
diff --git a/flake.nix b/flake.nix
index cceebceb..ce6fe518 100644
--- a/flake.nix
+++ b/flake.nix
@@ -6,11 +6,13 @@
"https://cache.nixos.org"
"https://nix-community.cachix.org"
"https://install.determinate.systems"
+ "https://vicinae.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"cache.flakehub.com-3:hJuILl5sVK4iKm86JzgdXW12Y2Hwd5G07qKtHTOcDCM="
+ "vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc="
];
cores = 0;
max-jobs = 2;
@@ -119,6 +121,9 @@
url = "git+https://git.pyrox.dev/pyrox/pkgs";
inputs.nixpkgs.follows = "nixpkgs";
};
+ vicinae = {
+ url = "github:vicinaehq/vicinae";
+ };
tangled = {
url = "git+https://tangled.org/@tangled.org/core";
};
@@ -172,5 +177,7 @@
};
formatter = pkgs.nixfmt;
};
+ # Enable debugging for nixd
+ debug = true;
};
}
diff --git a/homeModules/all-modules.nix b/homeModules/all-modules.nix
index d804ed8c..b523be13 100644
--- a/homeModules/all-modules.nix
+++ b/homeModules/all-modules.nix
@@ -11,5 +11,6 @@
inputs.nix-index-database.homeModules.nix-index
inputs.ctp.homeModules.catppuccin
+ inputs.vicinae.homeManagerModules.default
];
}
diff --git a/homeModules/profiles/gui/default.nix b/homeModules/profiles/gui/default.nix
index d8b5e643..20c0541c 100644
--- a/homeModules/profiles/gui/default.nix
+++ b/homeModules/profiles/gui/default.nix
@@ -12,9 +12,6 @@ in
{
options.py.profiles.gui.enable = mkEnableOption "GUI Profile";
config = lib.mkIf cfg.enable {
- home.sessionVariables = {
- XDG_CURRENT_DESKTOP = "sway";
- };
py = {
programs = {
chromium.enable = mkDefault true;
@@ -29,9 +26,10 @@ in
};
services = {
gpg-agent.enable = mkDefault true;
- kanshi.enable = mkDefault true;
+ kanshi.enable = mkDefault false;
kdeconnect.enable = mkDefault true;
- mako.enable = mkDefault true;
+ mako.enable = mkDefault false;
+ vicinae.enable = mkDefault true;
swayidle.enable = mkDefault true;
syncthing.enable = mkDefault false;
};
@@ -39,15 +37,14 @@ in
home.packages = with pkgs; [
chatterino2
equibop
- grim
krita
libappindicator
libappindicator-gtk3
lutris
prismlauncher
pwvucontrol
+ hyprshot
satty
- slurp
ueberzug
(olympus.overrideAttrs (_: {
celesteWrapper = osConfig.programs.steam.package.run;
diff --git a/homeModules/programs/wlogout/default.nix b/homeModules/programs/wlogout/default.nix
index a0cb6578..7029c38c 100644
--- a/homeModules/programs/wlogout/default.nix
+++ b/homeModules/programs/wlogout/default.nix
@@ -40,7 +40,7 @@ in
}
{
label = "lock";
- action = lib.getExe pkgs.swaylock-effects;
+ action = "hyprlock";
text = "Lock";
keybind = "l";
}
diff --git a/homeModules/programs/wlogout/style.nix b/homeModules/programs/wlogout/style.nix
index 3a594558..e0cf4f1e 100644
--- a/homeModules/programs/wlogout/style.nix
+++ b/homeModules/programs/wlogout/style.nix
@@ -7,7 +7,7 @@ in
background-image: none;
}
window {
- background-image: image(url("/home/thehedgehog/bgs/ctp-waves.png"), url("/home/thehedgehog/bgs/ctp-waves.png"));
+ background-image: image(url("/home/thehedgehog/bgs/wallpapers/xenia/chimmie_valentine_xenia.png"), url("/home/thehedgehog/bgs/wallpapers/xenia/chimmie_valentine_xenia.png"));
background-size: cover;
}
button {
diff --git a/homeModules/services/default.nix b/homeModules/services/default.nix
index f899236c..38ddc905 100644
--- a/homeModules/services/default.nix
+++ b/homeModules/services/default.nix
@@ -6,5 +6,6 @@
./mako
./swayidle
./syncthing
+ ./vicinae
];
}
diff --git a/homeModules/services/mako/default.nix b/homeModules/services/mako/default.nix
index f7dcf364..f9962353 100644
--- a/homeModules/services/mako/default.nix
+++ b/homeModules/services/mako/default.nix
@@ -1,12 +1,14 @@
{ lib, config, ... }:
let
cfg = config.py.services.mako;
+ hl = config.wayland.windowManager.hyprland;
in
{
options.py.services.mako.enable = lib.mkEnableOption "mako";
# avoid IFD
config.catppuccin.mako.enable = false;
- config.services.mako = lib.mkIf cfg.enable {
+ # Hyprpanel with hyprland uses its own notification daemon
+ config.services.mako = lib.mkIf (cfg.enable && !hl.enable) {
enable = true;
settings = {
diff --git a/homeModules/services/swayidle/default.nix b/homeModules/services/swayidle/default.nix
index 4faa0a18..223c19cf 100644
--- a/homeModules/services/swayidle/default.nix
+++ b/homeModules/services/swayidle/default.nix
@@ -10,7 +10,7 @@ in
{
options.py.services.swayidle.enable = lib.mkEnableOption "swayidle";
config.services.swayidle = lib.mkIf cfg.enable {
- enable = true;
+ enable = false;
events = [
{
event = "lock";
diff --git a/homeModules/services/vicinae/default.nix b/homeModules/services/vicinae/default.nix
new file mode 100644
index 00000000..d551786b
--- /dev/null
+++ b/homeModules/services/vicinae/default.nix
@@ -0,0 +1,15 @@
+{
+ config,
+ lib,
+ ...
+}:
+let
+ cfg = config.py.services.vicinae;
+in
+{
+ options.py.services.vicinae.enable = lib.mkEnableOption "Vicinae";
+ config.services.vicinae = lib.mkIf cfg.enable {
+ enable = true;
+ autoStart = true;
+ };
+}
diff --git a/homeModules/theming/default.nix b/homeModules/theming/default.nix
index 6a06e041..4280fe21 100644
--- a/homeModules/theming/default.nix
+++ b/homeModules/theming/default.nix
@@ -15,8 +15,9 @@ in
};
home.pointerCursor = mkIf pro.gui.enable {
package = pkgs.catppuccin-cursors.mochaBlue;
- name = "Catppuccin-Mocha-Blue";
+ name = "catppuccin-mocha-blue-cursors";
gtk.enable = true;
+ hyprcursor.enable = true;
};
gtk = mkIf pro.gui.enable {
enable = true;
diff --git a/homeModules/wayland/default.nix b/homeModules/wayland/default.nix
index 1d4bc9ae..1aade3a1 100644
--- a/homeModules/wayland/default.nix
+++ b/homeModules/wayland/default.nix
@@ -4,5 +4,6 @@
./keybindings.nix
./waybar.nix
./swaylock.nix
+ ./hyprland
];
}
diff --git a/homeModules/wayland/hyprland/default.nix b/homeModules/wayland/hyprland/default.nix
new file mode 100644
index 00000000..abe149b4
--- /dev/null
+++ b/homeModules/wayland/hyprland/default.nix
@@ -0,0 +1,35 @@
+{
+ pkgs,
+ config,
+ osConfig,
+ lib,
+ ...
+}:
+let
+ c = osConfig.py.programs.hyprland;
+ cfg = config.wayland.windowManager.hyprland;
+in
+{
+ imports = [
+ ./hyprpanel.nix
+ ./services.nix
+ ./hypridle.nix
+ ./hyprlock.nix
+ ];
+ config = {
+ catppuccin.hyprland.enable = c.enable;
+ wayland.windowManager.hyprland = {
+ enable = c.enable;
+ # Per https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.hyprland.package
+ package = null;
+ systemd = {
+ enable = true;
+ enableXdgAutostart = true;
+ };
+ settings = import ./settings.nix;
+ plugins = [
+ pkgs.hyprlandPlugins.hy3
+ ];
+ };
+ };
+}
diff --git a/homeModules/wayland/hyprland/env.nix b/homeModules/wayland/hyprland/env.nix
new file mode 100644
index 00000000..65dbde47
--- /dev/null
+++ b/homeModules/wayland/hyprland/env.nix
@@ -0,0 +1,9 @@
+{
+ env = [
+ "WLR_NO_HARDWARE_CURSORS, 1"
+ "WLR_RENDERER_ALLOW_SOFTWARE, 1"
+ "NIXOS_OZONE_WL, 1"
+ "XDG_SESSION_TYPE, wayland"
+ "QT_QPA_PLATFORM, wayland"
+ ];
+}
diff --git a/homeModules/wayland/hyprland/hypridle.nix b/homeModules/wayland/hyprland/hypridle.nix
new file mode 100644
index 00000000..7b9e5da0
--- /dev/null
+++ b/homeModules/wayland/hyprland/hypridle.nix
@@ -0,0 +1,18 @@
+{
+ config,
+ lib,
+ ...
+}:
+let
+ cfg = config.wayland.windowManager.hyprland;
+in
+{
+ config.services.hypridle = lib.mkIf cfg.enable {
+ enable = false;
+ settings = {
+ general = {
+ lock_cmd = "hyprlock";
+ };
+ };
+ };
+}
diff --git a/homeModules/wayland/hyprland/hyprlock.nix b/homeModules/wayland/hyprland/hyprlock.nix
new file mode 100644
index 00000000..d127395d
--- /dev/null
+++ b/homeModules/wayland/hyprland/hyprlock.nix
@@ -0,0 +1,93 @@
+{
+ config,
+ lib,
+ ...
+}:
+let
+ cfg = config.wayland.windowManager.hyprland;
+in
+{
+ config.catppuccin.hyprlock.enable = cfg.enable;
+ config.catppuccin.hyprlock.useDefaultConfig = false;
+ config.programs.hyprlock = lib.mkIf cfg.enable {
+ enable = true;
+ settings = {
+ general = {
+ hide_cursor = true;
+ immediate_render = true;
+ text_trim = true;
+ };
+ };
+ extraConfig = ''
+ $accent = $mauve
+ $accentAlpha = $mauveAlpha
+ $font = Blex Mono Nerd Font
+
+ # BACKGROUND
+ background {
+ monitor =
+ path = $HOME/bgs/wallpapers/xenia/chimmie_valentine_xenia.png
+ blur_passes = 1
+ color = $base
+ }
+
+ # TIME
+ label {
+ monitor =
+ text = $TIME
+ color = $text
+ font_size = 90
+ font_family = $font
+ position = -30, 0
+ halign = right
+ valign = top
+ }
+
+ # DATE
+ label {
+ monitor =
+ text = cmd[update:43200000] date +"%A, %d %B %Y"
+ color = $text
+ font_size = 25
+ font_family = $font
+ position = -30, -150
+ halign = right
+ valign = top
+ }
+
+ # USER AVATAR
+ image {
+ monitor =
+ path = $HOME/.face
+ size = 100
+ border_color = $accent
+ position = 0, 75
+ halign = center
+ valign = center
+ }
+
+ # INPUT FIELD
+ input-field {
+ monitor =
+ size = 300, 60
+ outline_thickness = 4
+ dots_size = 0.2
+ dots_spacing = 0.2
+ dots_center = true
+ outer_color = $accent
+ inner_color = $surface0
+ font_color = $text
+ fade_on_empty = false
+ placeholder_text = Logged in as $USER
+ hide_input = false
+ check_color = $accent
+ fail_color = $red
+ fail_text = $FAIL ($ATTEMPTS)
+ capslock_color = $yellow
+ position = 0, -47
+ halign = center
+ valign = center
+ }
+ '';
+ };
+}
diff --git a/homeModules/wayland/hyprland/hyprpanel.nix b/homeModules/wayland/hyprland/hyprpanel.nix
new file mode 100644
index 00000000..6b9778d6
--- /dev/null
+++ b/homeModules/wayland/hyprland/hyprpanel.nix
@@ -0,0 +1,14 @@
+{
+ config,
+ lib,
+ ...
+}:
+let
+ cfg = config.wayland.windowManager.hyprland;
+in
+{
+ programs.hyprpanel = lib.mkIf cfg.enable {
+ enable = true;
+ systemd.enable = true;
+ };
+}
diff --git a/homeModules/wayland/hyprland/keybindings.nix b/homeModules/wayland/hyprland/keybindings.nix
new file mode 100644
index 00000000..178cb4eb
--- /dev/null
+++ b/homeModules/wayland/hyprland/keybindings.nix
@@ -0,0 +1,98 @@
+{
+ "$mod" = "SUPER";
+ "$satty" = "satty -f -";
+
+ binde = [
+ # Media binds that can be held and repeated
+ ", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
+ ", XF86MonBrightnessUp, exec, brightnessctl set +5%"
+ ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
+ ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
+ ];
+
+ bind = [
+ "SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox"
+ "$mod, Return, exec, ghostty"
+ "$mod, X, exec, wlogout"
+ "$mod, D, exec, vicinae toggle"
+ "SUPER_SHIFT, E, exit"
+
+ # Media Binds
+ ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
+ ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
+ ", XF86AudioPlay, exec, playerctl play-pause"
+ ", XF86AudioNext, exec, playerctl next"
+ ", XF86AudioPrev, exec, playerctl previous"
+
+ # Workspace binds
+ "$mod, 1, workspace, 01"
+ "SUPER_SHIFT, 1, hy3:movetoworkspace, 01, follow, warp"
+ "$mod, 2, workspace, 02"
+ "SUPER_SHIFT, 2, hy3:movetoworkspace, 02, follow, warp"
+ "$mod, 3, workspace, 03"
+ "SUPER_SHIFT, 3, hy3:movetoworkspace, 03, follow, warp"
+ "$mod, 4, workspace, 04"
+ "SUPER_SHIFT, 4, hy3:movetoworkspace, 04, follow, warp"
+ "$mod, 5, workspace, 05"
+ "SUPER_SHIFT, 5, hy3:movetoworkspace, 05, follow, warp"
+ "$mod, 6, workspace, 06"
+ "SUPER_SHIFT, 6, hy3:movetoworkspace, 06, follow, warp"
+ "$mod, 7, workspace, 07"
+ "SUPER_SHIFT, 7, hy3:movetoworkspace, 07, follow, warp"
+ "$mod, 8, workspace, 08"
+ "SUPER_SHIFT, 8, hy3:movetoworkspace, 08, follow, warp"
+ "$mod, 9, workspace, 09"
+ "SUPER_SHIFT, 9, hy3:movetoworkspace, 09, follow, warp"
+ "$mod, 0, workspace, 10"
+ "SUPER_SHIFT, 0, hy3:movetoworkspace, 10, follow, warp"
+ # Scratchpad
+ "SUPER_SHIFT, -, movetoworkspace, special"
+ "$mod, -, togglespecialworkspace"
+
+ # Window Management
+ "SUPER_SHIFT, Up, hy3:movewindow, up, once, visible"
+ "SUPER_SHIFT, K, hy3:movewindow, up, once, visible"
+ "$mod, Up, hy3:movefocus, up, visible, warp"
+ "$mod, K, hy3:movefocus, up, visible, warp"
+
+ "SUPER_SHIFT, Right, hy3:movewindow, right, once, visible"
+ "SUPER_SHIFT, L, hy3:movewindow, right, once, visible"
+ "$mod, Right, hy3:movefocus, right, visible, warp"
+ "$mod, L, hy3:movefocus, right, visible, warp"
+
+ "SUPER_SHIFT, Left, hy3:movewindow, left, once, visible"
+ "SUPER_SHIFT, H, hy3:movewindow, left, once, visible"
+ "$mod, Left, hy3:movefocus, left, visible, warp"
+ "$mod, H, hy3:movefocus, left, visible, warp"
+
+ "SUPER_SHIFT, Down, hy3:movewindow, down, once, visible"
+ "SUPER_SHIFT, J, hy3:movewindow, down, once, visible"
+ "$mod, Down, hy3:movefocus, down, visible, warp"
+ "$mod, J, hy3:movefocus, down, visible, warp"
+
+ "SUPER_SHIFT, Q, killactive"
+ "$mod, F, fullscreen, 0"
+ "$mod, Space, hy3:togglefocuslayer"
+ "SUPER_SHIFT, Space, togglefloating, active"
+
+ # Screenshots
+ "SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty"
+ "SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty"
+ ];
+
+ bindm = [
+ "$mod, mouse:272, movewindow"
+ ];
+
+ # Unbind a bunch of default keybinds
+ unbind = [
+ "$mod, C"
+ "$mod, E"
+ "$mod, J"
+ "$mod, M"
+ "$mod, P"
+ "$mod, Q"
+ "$mod, R"
+ "$mod, V"
+ ];
+}
diff --git a/homeModules/wayland/hyprland/monitors.nix b/homeModules/wayland/hyprland/monitors.nix
new file mode 100644
index 00000000..77c7e20c
--- /dev/null
+++ b/homeModules/wayland/hyprland/monitors.nix
@@ -0,0 +1,8 @@
+{
+ monitor = [
+ "eDP-1, 2560x1600@165, 0x0, 1, vrr, 1"
+ "desc:Acer Technologies SA241Y 0x1497CF17, preferred, 2560x0, 1"
+ # Fallback for random monitors
+ ", preferred, auto, 1"
+ ];
+}
diff --git a/homeModules/wayland/hyprland/plugins.nix b/homeModules/wayland/hyprland/plugins.nix
new file mode 100644
index 00000000..2e638274
--- /dev/null
+++ b/homeModules/wayland/hyprland/plugins.nix
@@ -0,0 +1,7 @@
+{
+ plugin = {
+ hy3 = {
+ no_gaps_when_only = 1;
+ };
+ };
+}
diff --git a/homeModules/wayland/hyprland/services.nix b/homeModules/wayland/hyprland/services.nix
new file mode 100644
index 00000000..9347500f
--- /dev/null
+++ b/homeModules/wayland/hyprland/services.nix
@@ -0,0 +1,10 @@
+{
+ config,
+ ...
+}:
+let
+ cfg = config.wayland.windowManager.hyprland;
+in
+{
+ services.hyprpolkitagent.enable = cfg.enable;
+}
diff --git a/homeModules/wayland/hyprland/settings.nix b/homeModules/wayland/hyprland/settings.nix
new file mode 100644
index 00000000..f93f488d
--- /dev/null
+++ b/homeModules/wayland/hyprland/settings.nix
@@ -0,0 +1,22 @@
+let
+ keybinds = import ./keybindings.nix;
+ monitors = import ./monitors.nix;
+ variables = import ./variables.nix;
+ plugins = import ./plugins.nix;
+ env = import ./env.nix;
+ windowrules = import ./windowrules.nix;
+in
+{
+ exec-once = [
+ "hyprpanel"
+ ];
+ animation = [
+ "global, 1, 4, default"
+ ];
+}
+// keybinds
+// monitors
+// variables
+// plugins
+// env
+// windowrules
diff --git a/homeModules/wayland/hyprland/variables.nix b/homeModules/wayland/hyprland/variables.nix
new file mode 100644
index 00000000..fb2407d6
--- /dev/null
+++ b/homeModules/wayland/hyprland/variables.nix
@@ -0,0 +1,33 @@
+# https://wiki.hypr.land/Configuring/Variables
+{
+ general = {
+ gaps_in = 1;
+ gaps_out = 1;
+ gaps_workspaces = 80;
+ layout = "hy3";
+ resize_on_border = true;
+ };
+ decoration = {
+ blur.enabled = false;
+ shadow.enabled = false;
+ };
+ misc = {
+ disable_hyprland_logo = true;
+ disable_splash_rendering = true;
+ font_family = "Inter";
+ mouse_move_focuses_monitor = true;
+ };
+ input = {
+ kb_options = "caps:escape";
+ repeat_delay = 300;
+ touchpad = {
+ scroll_factor = 1.5;
+ tap_button_map = "lmr";
+ tap-and-drag = false;
+ };
+ };
+ ecosystem = {
+ no_update_news = true;
+ no_donation_nag = true;
+ };
+}
diff --git a/homeModules/wayland/hyprland/windowrules.nix b/homeModules/wayland/hyprland/windowrules.nix
new file mode 100644
index 00000000..753909c1
--- /dev/null
+++ b/homeModules/wayland/hyprland/windowrules.nix
@@ -0,0 +1,6 @@
+{
+ windowrule = [
+ "immediate, content game, title:Celeste"
+ "tile, title:Melvor Idle"
+ ];
+}
diff --git a/homeModules/wayland/waybar.nix b/homeModules/wayland/waybar.nix
index b8c54b0f..82bdf220 100644
--- a/homeModules/wayland/waybar.nix
+++ b/homeModules/wayland/waybar.nix
@@ -6,16 +6,17 @@
}:
let
cfg = config.py.profiles.gui;
+ sway = config.wayland.windowManager.sway;
in
{
config = {
- xdg.configFile."waybar/mocha.css" = lib.mkIf cfg.enable {
+ xdg.configFile."waybar/mocha.css" = lib.mkIf (cfg.enable && sway.enable) {
source = ./waybar-mocha.css;
recursive = false;
};
catppuccin.waybar.enable = false;
- programs.waybar = lib.mkIf cfg.enable {
- enable = lib.mkDefault true;
+ programs.waybar = lib.mkIf (cfg.enable && sway.enable) {
+ enable = lib.mkDefault false;
systemd.enable = true;
systemd.target = "sway-session.target";
style = ./waybar-style.css;
diff --git a/hosts/default.nix b/hosts/default.nix
index 29df6d8a..ecd11ce2 100644
--- a/hosts/default.nix
+++ b/hosts/default.nix
@@ -11,6 +11,7 @@
inputs.self.nixosModules.defaultConfig
inputs.self.nixosModules.defaultUsers
inputs.self.nixosModules.firefox
+ inputs.self.nixosModules.hyprland
inputs.self.nixosModules.forgejo-runner
inputs.self.nixosModules.hm-pyrox
inputs.self.nixosModules.hm-thehedgehog
diff --git a/hosts/zaphod/default.nix b/hosts/zaphod/default.nix
index 49327491..7fa7ebbe 100644
--- a/hosts/zaphod/default.nix
+++ b/hosts/zaphod/default.nix
@@ -35,6 +35,7 @@
dconf.enable = true;
firefox.enable = true;
fish.enable = true;
+ hyprland.enable = true;
less.enable = true;
neovim.enable = true;
noisetorch.enable = true;
diff --git a/hosts/zaphod/programs/sway.nix b/hosts/zaphod/programs/sway.nix
index 605b1df1..5ef3cabb 100644
--- a/hosts/zaphod/programs/sway.nix
+++ b/hosts/zaphod/programs/sway.nix
@@ -1,11 +1,6 @@
-{ pkgs, ... }:
{
programs.sway = {
- enable = true;
- extraPackages = with pkgs; [
- swaylock-effects
- swayidle
- ];
+ enable = false;
wrapperFeatures.base = true;
wrapperFeatures.gtk = true;
};
diff --git a/img.png b/img.png
new file mode 100644
index 00000000..e69de29b
diff --git a/nixosModules/default.nix b/nixosModules/default.nix
index e8c9f4a5..0990e02e 100644
--- a/nixosModules/default.nix
+++ b/nixosModules/default.nix
@@ -11,6 +11,7 @@
# Programs
chromium = import ./programs/chromium;
firefox = import ./programs/firefox;
+ hyprland = import ./programs/hyprland;
miscPrograms = import ./programs/misc;
neovim = import ./programs/neovim;
diff --git a/nixosModules/homes/.default.nix.bak b/nixosModules/homes/.default.nix.bak
deleted file mode 100644
index c2219e52..00000000
--- a/nixosModules/homes/.default.nix.bak
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- lib,
- withSystem,
- inputs,
- ...
-}:
-let
- mkHM = withSystem "x86_64-linux" (
- { pkgs, system, ... }:
- extra:
- inputs.home-manager.lib.homeManagerConfiguration (
- lib.mergeAttrs {
- inherit pkgs;
- extraSpecialArgs = { inherit inputs system; };
- } extra
- )
- );
- defaultModules = [
- inputs.ctp.homeModules.default
- inputs.self.homeModules.theming
- inputs.self.homeModules.programs
- inputs.self.homeModules.services
- ];
-
-in
-{
- flake.homeConfigurations = {
- marvin-pyrox = mkHM {
- modules = [
- inputs.self.homeModules.profiles
- ./pyrox
- {
- py.profiles.server.enable = true;
- }
- ]
- ++ defaultModules;
- };
- marvin-thehedgehog = mkHM {
- modules = [
- inputs.self.homeModules.profiles
- ./thehedgehog
- {
- py.profiles.server.enable = true;
- }
- ]
- ++ defaultModules;
- };
- prefect-pyrox = mkHM {
- modules = [
- inputs.self.homeModules.profiles
- ./pyrox
- {
- py.profiles.server.enable = true;
- }
- ]
- ++ defaultModules;
- };
- prefect-thehedgehog = mkHM {
- modules = [
- inputs.self.homeModules.profiles
- ./thehedgehog
- {
- py.profiles.server.enable = true;
- }
- ]
- ++ defaultModules;
- };
- thought-pyrox = mkHM {
- modules = [
- inputs.self.homeModules.profiles
- ./pyrox
- {
- py.profiles.server.enable = true;
- }
- ]
- ++ defaultModules;
- };
- thought-thehedgehog = mkHM {
- modules = [
- inputs.self.homeModules.profiles
- ./thehedgehog
- {
- py.profiles.server.enable = true;
- }
- ]
- ++ defaultModules;
- };
- zaphod-pyrox = withSystem "x86_64-linux" (
- { pkgs, ... }:
- inputs.home-manager.lib.homeManagerConfiguration {
- inherit pkgs;
- modules = [
- inputs.self.homeModules.profiles
- {
- imports = [
- ./pyrox
- "${inputs.self}/homeConfigurations/pyrox@zaphod"
- ];
- py.profiles.desktop.enable = true;
- }
- ]
- ++ defaultModules;
- }
- );
- zaphod-thehedgehog = withSystem "x86_64-linux" (
- { pkgs, ... }:
- inputs.home-manager.lib.homeManagerConfiguration {
- inherit pkgs;
- modules = [
- inputs.self.homeModules.profiles
- {
- imports = [
- ./thehedgehog
- "${inputs.self}/homeConfigurations/thehedgehog@zaphod"
- ];
- py.profiles.desktop.enable = true;
- }
- ]
- ++ defaultModules;
- }
- );
- };
-}
diff --git a/nixosModules/programs/hyprland/default.nix b/nixosModules/programs/hyprland/default.nix
new file mode 100644
index 00000000..6494a90a
--- /dev/null
+++ b/nixosModules/programs/hyprland/default.nix
@@ -0,0 +1,20 @@
+{
+ config,
+ lib,
+ ...
+}:
+let
+ cfg = config.py.programs.hyprland;
+in
+{
+ options = {
+ py.programs.hyprland.enable = lib.mkEnableOption "Hyprland";
+ };
+ config = lib.mkIf cfg.enable {
+ programs.hyprland = {
+ enable = true;
+ xwayland.enable = true;
+ };
+ programs.hyprlock.enable = cfg.enable;
+ };
+}