summaryrefslogtreecommitdiff
path: root/home/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'home/desktop')
-rw-r--r--home/desktop/default.nix14
-rw-r--r--home/desktop/firefox.nix30
-rw-r--r--home/desktop/sway.nix117
3 files changed, 161 insertions, 0 deletions
diff --git a/home/desktop/default.nix b/home/desktop/default.nix
new file mode 100644
index 0000000..1608693
--- /dev/null
+++ b/home/desktop/default.nix
@@ -0,0 +1,14 @@
+{ config, lib, pkgs, ... }:
+with lib; let
+ cfg = config.local.desktop;
+in
+{
+ imports = [
+ ./firefox.nix
+ ./sway.nix
+ ];
+
+ options.local.desktop = {
+ enable = mkEnableOption "desktop";
+ };
+}
diff --git a/home/desktop/firefox.nix b/home/desktop/firefox.nix
new file mode 100644
index 0000000..4a7bbac
--- /dev/null
+++ b/home/desktop/firefox.nix
@@ -0,0 +1,30 @@
+{ config, lib, pkgs, ... }:
+with lib; let
+ cfg = config.local.desktop;
+in
+{
+ config = mkIf cfg.enable {
+ programs.firefox = {
+ enable = true;
+
+ package = pkgs.firefox.override {
+ nativeMessagingHosts = [ pkgs.passff-host ];
+ };
+
+ profiles."main.profile" = {
+ id = 0;
+ name = "default";
+
+ extensions = with pkgs.nur.repos.rycee.firefox-addons; [
+ decentraleyes
+ darkreader
+ old-reddit-redirect
+ passff
+ privacy-badger
+ ublock-origin
+ umatrix
+ ];
+ };
+ };
+ };
+}
diff --git a/home/desktop/sway.nix b/home/desktop/sway.nix
new file mode 100644
index 0000000..1162e87
--- /dev/null
+++ b/home/desktop/sway.nix
@@ -0,0 +1,117 @@
+{ config, lib, pkgs, ... }:
+with lib; let
+ cfg = config.local.desktop;
+in
+{
+ config = mkIf cfg.enable {
+ programs = {
+ swaylock = {
+ enable = true;
+
+ settings = {
+ color = "222222";
+ font-size = 24;
+ show-failed-attempts = true;
+ };
+ };
+
+ waybar.enable = true;
+
+ wofi.enable = true;
+ };
+
+ services = {
+ swayidle = {
+ enable = true;
+
+ timeouts = [
+ { timeout = 600; command = "${getExe config.programs.swaylock.package} -fF"; }
+ ];
+ };
+ };
+
+ systemd.user.services.wl-gammarelay-rs = {
+ Unit.After = [ "sway-session.target" ];
+ Install.WantedBy = [ "sway-session.target" ];
+
+ Service.ExecStart = getExe pkgs.wl-gammarelay-rs;
+ };
+
+ wayland.windowManager.sway = {
+ enable = true;
+
+ config = {
+ modifier = "Mod4";
+ focus.followMouse = false;
+
+ fonts = {
+ size = 11.0;
+ names = [ "DejaVu Sans Mono" ];
+ style = "Bold Semi-Condensed";
+ };
+
+ bars = singleton {
+ command = "waybar";
+ position = "top";
+ };
+
+ keybindings =
+ let
+ mod = config.wayland.windowManager.sway.config.modifier;
+ wofi = config.programs.wofi.package;
+
+ inherit (pkgs.local) st tmux-lift;
+
+ grimshot = getExe pkgs.sway-contrib.grimshot;
+ in
+ mkOptionDefault {
+ "${mod}+a" = "focus parent";
+ "${mod}+c" = "focus child";
+ "${mod}+d" = "exec --no-startup-id ${getExe wofi} -S run";
+ "${mod}+i" = "exec busctl --user call rs.wl-gammarelay / rs.wl.gammarelay ToggleInverted";
+ "${mod}+o" = "exec ${getExe config.programs.swaylock.package} -fF";
+ "${mod}+Return" = "exec ${getExe st} -e ${getExe tmux-lift}";
+ "${mod}+Shift+e" = "input * xkb_layout latam";
+ "${mod}+Shift+u" = "input * xkb_layout us";
+ "${mod}+p" = "exec ${grimshot} copy active";
+ "${mod}+Shift+p" = "exec ${grimshot} copy area";
+ "${mod}+Ctrl+p" = "exec ${grimshot} copy window";
+ };
+
+ startup = [
+ {
+ command = "${getExe pkgs.xautolock} -time 10 -locker '${pkgs.i3lock-color}/bin/i3lock-color -fe -c222222'";
+ }
+ ];
+
+ window.commands = [
+ # (No) Title Bars
+ {
+ command = "border pixel 5";
+ criteria.class = "^.*";
+ }
+
+ {
+ command = "floating enabled";
+ criteria.class = "floating";
+ }
+ ];
+ };
+
+ extraSessionCommands = ''
+ export SDL_VIDEODRIVER=wayland
+ # needs qt5.qtwayland in systemPackages
+ export QT_QPA_PLATFORM=wayland
+ export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
+ # Fix for some Java AWT applications (e.g. Android Studio),
+ # use this if they aren't displayed properly:
+ export _JAVA_AWT_WM_NONREPARENTING=1
+ '';
+
+ swaynag.enable = true;
+ systemd.enable = true;
+
+ xwayland = true;
+ };
+ };
+}