about summary refs log tree commit diff
path: root/home/profiles/gui/default.nix
diff options
context:
space:
mode:
authorsefidel <contact@sefidel.net>2023-07-25 18:58:27 +0900
committersefidel <contact@sefidel.net>2023-07-25 18:58:27 +0900
commitec647eecd447bfbbd8f7b6f2fe5bb65ebf9abf16 (patch)
treee36c9348852f95d95040ed61f7ee7a2b4501ef89 /home/profiles/gui/default.nix
parent6ccd70ae9afee4f9c98135502abca8f9d0f2b58d (diff)
downloadnixrc-ec647eecd447bfbbd8f7b6f2fe5bb65ebf9abf16.tar.gz
nixrc-ec647eecd447bfbbd8f7b6f2fe5bb65ebf9abf16.zip
feat(home): split gui from base
Diffstat (limited to 'home/profiles/gui/default.nix')
-rw-r--r--home/profiles/gui/default.nix142
1 files changed, 142 insertions, 0 deletions
diff --git a/home/profiles/gui/default.nix b/home/profiles/gui/default.nix
new file mode 100644
index 0000000..ac7b55b
--- /dev/null
+++ b/home/profiles/gui/default.nix
@@ -0,0 +1,142 @@
+{ config, lib, inputs, pkgs, self, ... }:
+let
+  cfg = config.profiles.gui;
+
+  neotheme = config.neotheme;
+in
+{
+  imports = [
+    ../../modules/misc/neotheme
+  ];
+
+  options.profiles.gui.enable = lib.mkEnableOption
+    "The gui profile, sets up sway and related applications.";
+
+  config = lib.mkIf cfg.enable {
+    gtk.enable = true;
+    gtk.iconTheme.package = pkgs.papirus-icon-theme;
+    gtk.iconTheme.name = "Papirus-Dark";
+    gtk.theme.package = (pkgs.orchis-theme.override { tweaks = [ "primary" "compact" ]; });
+    gtk.theme.name = "Orchis-dark-compact";
+    gtk.font.name = "Dina 10";
+
+    home.file.".icons/default".source = "${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ-AA";
+
+    neotheme = {
+      name = "Softjelly";
+      identifier = "softjelly";
+
+      colors = {
+        background = "151515";
+        foreground = "cbc0ab";
+        alt0 = "404040";
+        alt1 = "606060";
+        color0 = "3c3c3c";
+        color1 = "cf6a4c";
+        color2 = "99ad6a";
+        color3 = "dfa358";
+        color4 = "8197bf";
+        color5 = "b3a3ff";
+        color6 = "8fbfdc";
+        color7 = "cbc0ab";
+        bright0 = "4c4c4c";
+        bright1 = "d98870";
+        bright2 = "adbd88";
+        bright3 = "e5b579";
+        bright4 = "9aaccc";
+        bright5 = "c2b5ff";
+        bright6 = "a5cce3";
+        bright7 = "d5cdbc";
+      };
+    };
+
+    home.packages = [
+      # Sway
+      pkgs.autotiling
+      pkgs.swaylock-effects
+      pkgs.swaybg
+      pkgs.wayland-utils
+      pkgs.wl-clipboard
+      pkgs.grim
+      pkgs.slurp
+      pkgs.sway-contrib.grimshot
+      pkgs.waybar
+      pkgs.bemenu
+      pkgs.qt5.qtwayland
+      pkgs.xdg-utils
+
+      # Fix gpg not recognizing foot terminfo
+      pkgs.foot.terminfo
+    ];
+
+    wayland.windowManager.sway = {
+      enable = true;
+
+      wrapperFeatures = {
+        base = true;
+        gtk = true;
+      };
+
+      config = {
+        bars = [{ command = "${pkgs.waybar}/bin/waybar"; }];
+        keybindings = { };
+      };
+
+      extraSessionCommands = ''
+        export XDG_CURRENT_DESKTOP=sway;
+      '';
+
+      extraConfig = import ./config/sway.nix { inherit pkgs neotheme; };
+    };
+
+    programs = {
+      foot = {
+        enable = true;
+
+        settings = import ./config/foot.nix { inherit neotheme; };
+      };
+
+      waybar = {
+        enable = config.wayland.windowManager.sway.enable;
+
+        settings = [ (import ./config/waybar/settings.nix { inherit neotheme; }) ];
+
+        style = import ./config/waybar/style.nix { inherit neotheme; };
+      };
+    };
+
+    services = {
+      dunst = {
+        enable = true;
+        settings = import ./config/dunst.nix { inherit neotheme; };
+      };
+
+      swayidle = {
+        enable = true;
+        events = [
+          { event = "before-sleep"; command = "${pkgs.swaylock-effects}/bin/swaylock -fFc ${neotheme.colors.background} --indicator --grace 2 --fade-in 0.2"; }
+          { event = "lock"; command = "${pkgs.swaylock-effects}/bin/swaylock -fFc ${neotheme.colors.background} --indicator --grace 2 --fade-in 0.2"; }
+        ];
+        timeouts = [
+          { timeout = 270; command = "${pkgs.libnotify}/bin/notify-send -t 30000 'Locking screen in 30 seconds'"; }
+          { timeout = 300; command = "${pkgs.swaylock-effects}/bin/swaylock -fFc ${neotheme.colors.background} --indicator --grace 2 --fade-in 0.2"; }
+          {
+            timeout = 600;
+            command = "${pkgs.sway}/bin/swaymsg 'output * dpms off'";
+            resumeCommand = "${pkgs.sway}/bin/swaymsg 'output * dpms on'";
+          }
+          {
+            timeout = 900;
+            command = "${pkgs.systemd}/bin/systemctl suspend";
+          }
+        ];
+      };
+
+      wlsunset = {
+        enable = true;
+        latitude = "36.5";
+        longitude = "127.2";
+      };
+    };
+  };
+}