summaryrefslogtreecommitdiff
path: root/home/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'home/desktop')
-rw-r--r--home/desktop/athena.nix16
-rw-r--r--home/desktop/default.nix24
-rw-r--r--home/desktop/firefox.nix34
-rw-r--r--home/desktop/sway.nix124
4 files changed, 198 insertions, 0 deletions
diff --git a/home/desktop/athena.nix b/home/desktop/athena.nix
new file mode 100644
index 0000000..6c1cbad
--- /dev/null
+++ b/home/desktop/athena.nix
@@ -0,0 +1,16 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib; let
+ cfg = config.local.desktop;
+in {
+ config = mkIf cfg.enable {
+ local.athena-bccr = {
+ enable = true;
+ gaudiHash = "sha256-EFVb3K/hQUD/u8/IftBAIYvSefwPqZDvcT8S9B860MM=";
+ };
+ };
+}
diff --git a/home/desktop/default.nix b/home/desktop/default.nix
new file mode 100644
index 0000000..5f2d34e
--- /dev/null
+++ b/home/desktop/default.nix
@@ -0,0 +1,24 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ cfg = config.local.desktop;
+in {
+ imports = [
+ ./athena.nix
+ ./firefox.nix
+ ./sway.nix
+ ];
+
+ options.local.desktop = {
+ enable = lib.mkEnableOption "desktop";
+
+ portable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = "Device is a laptop";
+ };
+ };
+}
diff --git a/home/desktop/firefox.nix b/home/desktop/firefox.nix
new file mode 100644
index 0000000..f19b3ad
--- /dev/null
+++ b/home/desktop/firefox.nix
@@ -0,0 +1,34 @@
+{
+ 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.packages = 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..40fd83a
--- /dev/null
+++ b/home/desktop/sway.nix
@@ -0,0 +1,124 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib; let
+ cfg = config.local.desktop;
+in {
+ config = mkIf cfg.enable {
+ local = {
+ waybar = {
+ enable = true;
+
+ battery = cfg.portable;
+
+ fontSize = "24px";
+ fontFamily = "Hack Nerd Font";
+ };
+ };
+
+ home.packages = [
+ pkgs.wlr-randr
+ ];
+
+ programs = {
+ wofi.enable = true;
+ };
+
+ services = {
+ swayidle = {
+ enable = true;
+
+ timeouts = [
+ {
+ timeout = 600;
+ command = "${getExe pkgs.gtklock} -d";
+ }
+ ];
+ };
+ };
+
+ 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;
+
+ 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 pkgs.gtklock} -d";
+ "${mod}+Return" = "exec ${getExe pkgs.local.st} -e ${getExe pkgs.local.tmux-lift} ${getExe pkgs.local.tmux-open}";
+ "${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;
+ };
+ };
+}