aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorRosa <rosaontheweb@proton.me>2026-01-12 21:40:55 -0500
committerRosa <rosaontheweb@proton.me>2026-01-12 21:40:55 -0500
commit00085b663dbe8b9f903a9648bdf596ef63719585 (patch)
tree2c3011695d2de65ce4c77a7c6550d59e1df42a87 /modules
parent5570be9c9c64e0ba2474d73c2b6b23508b916fd6 (diff)
initial swayfx module
Diffstat (limited to 'modules')
-rw-r--r--modules/default.nix1
-rw-r--r--modules/swayfx.nix19
-rw-r--r--modules/user/default.nix2
-rw-r--r--modules/user/desktop/default.nix49
-rw-r--r--modules/user/desktop/swayfx.nix78
-rw-r--r--modules/user/desktops/default.nix12
-rw-r--r--modules/user/desktops/hyprland.nix6
7 files changed, 148 insertions, 19 deletions
diff --git a/modules/default.nix b/modules/default.nix
index 339daf1..e62353b 100644
--- a/modules/default.nix
+++ b/modules/default.nix
@@ -1,5 +1,6 @@
{
imports = [
+ ./swayfx.nix
./tuigreet.nix
];
}
diff --git a/modules/swayfx.nix b/modules/swayfx.nix
new file mode 100644
index 0000000..caa9fdf
--- /dev/null
+++ b/modules/swayfx.nix
@@ -0,0 +1,19 @@
+{
+ config,
+ lib,
+ pkgs,
+ options,
+ ...
+}:
+{
+ options.programs.swayfx.enable = lib.mkEnableOption "swayfx";
+
+ config.programs.sway =
+ if config.programs.swayfx.enable then
+ {
+ enable = lib.mkForce true;
+ package = lib.mkForce pkgs.swayfx;
+ }
+ else
+ { };
+}
diff --git a/modules/user/default.nix b/modules/user/default.nix
index 68500bd..5c8d960 100644
--- a/modules/user/default.nix
+++ b/modules/user/default.nix
@@ -1,5 +1,5 @@
{
imports = [
- ./desktops
+ ./desktop
];
}
diff --git a/modules/user/desktop/default.nix b/modules/user/desktop/default.nix
new file mode 100644
index 0000000..1cfd36b
--- /dev/null
+++ b/modules/user/desktop/default.nix
@@ -0,0 +1,49 @@
+{
+ config,
+ lib,
+ pkgs,
+ options,
+ ...
+}:
+{
+ imports = [
+ ./swayfx.nix
+ ];
+
+ options.desktop = {
+ windowManager = lib.mkOption {
+ description = "Which window manager to use";
+ default = null;
+ type = with lib.types; nullOr (enum [ ]);
+ };
+ };
+
+ config = {
+ home.packages = with pkgs; [
+ fira-code # monospace font
+ ];
+
+ programs.foot = {
+ enable = lib.mkDefault (config.desktop != null);
+ settings = {
+ bell = {
+ notify = true;
+ urgent = true;
+ };
+
+ colors = {
+ alpha = 0.7;
+ };
+
+ cursor.blink = true;
+ main = {
+ font = "Fira Code:size=8";
+ dpi-aware = true;
+ };
+
+ mouse.hide-when-typing = true;
+ };
+ };
+ };
+
+}
diff --git a/modules/user/desktop/swayfx.nix b/modules/user/desktop/swayfx.nix
new file mode 100644
index 0000000..2ea2e85
--- /dev/null
+++ b/modules/user/desktop/swayfx.nix
@@ -0,0 +1,78 @@
+{
+ config,
+ lib,
+ options,
+ ...
+}:
+{
+ options.desktop.windowManager = lib.mkOption { type = with lib.types; nullOr (enum [ "swayfx" ]); };
+
+ config.wayland.windowManager.sway =
+ if (config.desktop.windowManager == "swayfx") then
+ {
+ enable = lib.mkForce true;
+ package = null; # use the nixos module
+ config = {
+ bars = [ ];
+ bindswitches = {
+ "lid:off" = {
+ action = "output eDP-1 power on";
+ locked = true;
+ };
+
+ "lid:on" = {
+ action = "output eDP-1 power off";
+ locked = true;
+ };
+ };
+
+ floating.titlebar = false;
+ focus.followMouse = false;
+ gaps = {
+ inner = 4;
+ outer = 8;
+ };
+
+ input = {
+ "*" = {
+ accel_profile = "flat";
+ };
+
+ "type:touchpad" = {
+ drag = "enabled";
+ dwt = "enabled";
+ natural_scroll = "enabled";
+ tap = "enabled";
+ };
+ };
+
+ keybindings =
+ let
+ mod = config.wayland.windowManager.sway.config.modifier;
+ in
+ lib.mkOptionDefault {
+ "${mod}+Return" = "exec foot";
+ "${mod}+Q" = "kill";
+ };
+
+ modifier = "Mod4";
+ output = {
+ "eDP-1" = {
+ mode = "2256x1504@60Hz";
+ position = "0 0";
+ scale = "1.5";
+ };
+ };
+
+ window.titlebar = false;
+ };
+
+ extraConfig = ''
+ blur enable
+ corner_radius 10
+ shadows enable
+ '';
+ }
+ else
+ { };
+}
diff --git a/modules/user/desktops/default.nix b/modules/user/desktops/default.nix
deleted file mode 100644
index 36446f9..0000000
--- a/modules/user/desktops/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ config, lib, options, ... }:
-{
- imports = [
- ./hyprland.nix
- ];
-
- options.desktops.enable = lib.mkOption {
- description = "Which desktop setup to enable";
- default = null;
- type = with lib.types; nullOr (enum [ ]);
- };
-}
diff --git a/modules/user/desktops/hyprland.nix b/modules/user/desktops/hyprland.nix
deleted file mode 100644
index bc369bc..0000000
--- a/modules/user/desktops/hyprland.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ config, lib, options, ... }:
-{
- options.desktops = {
- enable = lib.mkOption { type = with lib.types; nullOr (enum [ "hyprland" ]); };
- };
-}