about summary refs log tree commit diff
path: root/machines
diff options
context:
space:
mode:
Diffstat (limited to 'machines')
-rw-r--r--machines/sternenseemann/TODO6
-rw-r--r--machines/sternenseemann/desktop-sway.nix290
-rw-r--r--machines/sternenseemann/wolfgang.nix9
3 files changed, 52 insertions, 253 deletions
diff --git a/machines/sternenseemann/TODO b/machines/sternenseemann/TODO
index 733ecde7..463d0c4a 100644
--- a/machines/sternenseemann/TODO
+++ b/machines/sternenseemann/TODO
@@ -1,3 +1,5 @@
-[ ] get screen capture with wayland to work
-[ ] port sway configuration into a somewhat generic module
+[x] get screen capture with wayland to work
+[x] port sway configuration into a somewhat generic module
+[ ] mako module
 [ ] use gpg-agent module?
+[ ] documentation.man without man-db, but with mandoc
diff --git a/machines/sternenseemann/desktop-sway.nix b/machines/sternenseemann/desktop-sway.nix
index 57040cec..57d9d7ee 100644
--- a/machines/sternenseemann/desktop-sway.nix
+++ b/machines/sternenseemann/desktop-sway.nix
@@ -7,44 +7,31 @@ let
     getBins
     ;
 
-  inherit (pkgs.writers)
-    writeDashBin
+  inherit (pkgs.vuizvui.sternenseemann)
+    tep
     ;
 
-  bins = (getBins pkgs.systemd [ "systemctl" ])
-      // (getBins pkgs.xurls [ "xurls" ])
-      // (getBins pkgs.bemenu [ "bemenu" ])
-      // (getBins pkgs.dbus [ "dbus-run-session" ])
-      // (getBins pkgs.sway [ "sway" "swaymsg" ])
+  bins = (getBins pkgs.xurls [ "xurls" ])
+      // (getBins pkgs.bemenu [ "bemenu" "bemenu-run" ])
+      // (getBins tep [ "tep" ])
+      // (getBins pkgs.grim [ "grim" ])
+      // (getBins pkgs.slurp [ "slurp" ])
+      // (getBins pkgs.mako [ "makoctl" ])
+      // (getBins screenshot [ "screenshot" ])
+      // (getBins pkgs.foot [ "foot" ])
       ;
 
-  # manual start script
-  startSway = writeDashBin "start-sway" ''
-    ${bins.systemctl} --user import-environment
-    ${bins.systemctl} --user start sway.service
-  '';
-
-  # sway scripts for systemd
-  swayService = writeDashBin "sway-service" ''
-    ${bins.dbus-run-session} -- "${pkgs.sway}/bin/sway"
-  '';
+  screenshot = pkgs.writers.writeDashBin "screenshot" ''
+    if [ "$1" != "full" ]; then
+      additionalOpts='-g "$(${bins.slurp})"'
+      shift
+    fi
 
-  exitSway = writeDashBin "exit-sway" ''
-    ${bins.swaymsg} exit
-    ${bins.systemctl} --user unset-environment WAYLAND_DISPLAY
-    ${bins.systemctl} --user unset-environment DISPLAY
+    ${bins.grim} $additionalOpts -c -t png
   '';
 
-  # reduce repition in sway config by generating workspace switches
-  wsConfig = lib.concatMapStringsSep "\n" (n: ''
-    bindsym $mod+${toString n} workspace number ${toString n}
-    bindsym $mod+Shift+${toString n} move container to workspace number ${toString n}
-  '') [1 2 3 4 5 6 7 8 9];
+  defaultFont = "Bitstream Vera Sans Mono";
 
-  # .Xresources file to fix DPI issues in Xwayland
-  xResources = pkgs.writeText "Xresources" ''
-    Xft.dpi: 96
-  '';
 in
 
 {
@@ -53,201 +40,32 @@ in
   ];
 
   config = {
-    programs.sway = {
+    vuizvui.user.sternenseemann.services.sway = {
       enable = true;
-      extraPackages = with pkgs; [
-        vuizvui.sternenseemann.tep # emoji picker
-        bemenu                     # better dmenu
-        xwayland qt5.qtwayland
-        wl-clipboard               # instead of xsel
-        grim slurp                 # screenshots
-        mako                       # notifications
-      ];
-      wrapperFeatures = {
-        gtk = true;
-        base = true;
+      additionalBinds = {
+        "$mod+g" = "${bins.tep} copy -l 25 -p 'tep>' -i";
+        "$mod+c" = "${bins.makoctl} dismiss -a";
+        "$mod+x" = bins.screenshot;
       };
-    };
-
-    environment.sessionVariables = {
-      # TODO(sterni) get screen capture working in firefox
-      XDG_SESSION_TYPE = "wayland";
-      XDG_CURRENT_DESKTOP = "sway";
-      MOZ_ENABLE_WAYLAND = "1";
-      # SDL
-      SDL_VIDEODRIVER = "wayland";
-      # QT
-      QT_QPA_PLATFORM = "wayland";
-      QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
-    };
-
-    services.dbus.packages = [ pkgs.mako ];
-
-    services.pipewire.enable = true;
-    xdg.portal = {
-      enable = true;
-      extraPortals = with pkgs; [
-        xdg-desktop-portal-wlr
-        xdg-desktop-portal-gtk
+      term = bins.foot;
+      menu = "${bins.bemenu-run} -l 10 -i";
+      lockArgs = [
+        "-c" "FFC0CB" "-k" "-l"
       ];
-      gtkUsePortal = true;
-    };
-
-    environment.etc = {
-      "sway/config".text = ''
-        # correct DPI after hotplugging
-        exec ${pkgs.xorg.xrdb}/bin/xrdb -load ${xResources}
-
-        set $mod Mod4
-        #set $term ${pkgs.kitty}/bin/kitty
-        set $term ${pkgs.foot}/bin/foot
-        set $menu ${pkgs.bemenu}/bin/bemenu-run -l 5 -i
-        set $makoctl ${pkgs.mako}/bin/makoctl
-
-        # neo arrow keys
-        set $left i
-        set $right e
-        set $up l
-        set $down a
-
-        bindsym $mod+Shift+c reload
-
-        bindsym $mod+Return exec $term
-        bindsym $mod+d exec $menu
-
-        bindsym $mod+c exec $makoctl dismiss -a
-
-        bindsym $mod+g exec ${pkgs.vuizvui.sternenseemann.tep}/bin/tep copy -l 25 -p 'tep>' -i
-
-        bindsym $mod+Shift+q kill
-
-        bindsym $mod+h splith
-        bindsym $mod+v splitv
-
-        bindsym $mod+s layout stacking
-        bindsym $mod+t layout tabbed
-        bindsym $mod+n layout toggle split
-
-        bindsym $mod+f fullscreen
-
-        bindsym $mod+Shift+space floating toggle
-        bindsym $mod+space focus mode_toggle
-        floating_modifier $mod normal
-
-        bindsym $mod+$left focus left
-        bindsym $mod+$down focus down
-        bindsym $mod+$up focus up
-        bindsym $mod+$right focus right
-
-        bindsym $mod+p focus parent
-
-        bindsym $mod+Shift+$left move left
-        bindsym $mod+Shift+$down move down
-        bindsym $mod+Shift+$up move up
-        bindsym $mod+Shift+$right move right
-
-        mode "resize" {
-          bindsym $left resize shrink width 10px
-          bindsym $down resize grow height 10px
-          bindsym $up resize shrink height 10px
-          bindsym $right resize grow width 10px
-
-          bindsym Return mode "default"
-          bindsym Escape mode "default"
-        }
-        bindsym $mod+r mode "resize"
-
-        # workspace shortcuts
-        ${wsConfig}
-
-        set $pactl ${config.hardware.pulseaudio.package}/bin/pactl
-        bindsym XF86AudioRaiseVolume exec $pactl set-sink-volume @DEFAULT_SINK@ +5%
-        bindsym XF86AudioLowerVolume exec $pactl set-sink-volume @DEFAULT_SINK@ -5%
-        bindsym XF86AudioMute exec $pactl set-sink-mute @DEFAULT_SINK@ toggle
-        bindsym XF86AudioMicMute exec $pactl set-source-mute @DEFAULT_SOURCE@ toggle
-
-        set $brightnessctl ${pkgs.brightnessctl}/bin/brightnessctl
-        bindsym XF86MonBrightnessDown exec $brightnessctl set 5%-
-        bindsym XF86MonBrightnessUp exec $brightnessctl set +5%
-
-        bindsym $mod+0 exec ${pkgs.swaylock}/bin/swaylock -c FFC0CB -k -l
-
-        font "DejaVu Sans Mono normal 10"
-
-        gaps inner 10
-
-        output * bg #000000 solid_color
-
-        # class        border  backgr. text    indicator
-        client.focused #ffffff #ffffff #000000 #d0d0d0
-        client.focused_inactive #000000 #000000 #ffffff #000000
-        client.unfocused #000000 #000000 #ffffff #000000
-        client.urgent #900000 #900000 #ffffff #900000
-
-        bar {
-          status_command ${pkgs.i3status}/bin/i3status
-          position top
-          colors {
-            font "DejaVu Sans Mono normal 10"
-            statusline #ffffff
-            background #000000
-            focused_workspace #ffffff #ffffff #000000
-            active_workspace #ffffff #ffffff #c4c4c4
-            inactive_workspace #000000 #000000 #ffffff
-            urgent_workspace #900000 #900000 #ffffff
-          }
-        }
-      '';
-      "xdg/i3status/config".text = ''
-        # TODO(sterni) replace i3status?
-        general {
-          output_format = "i3bar"
-          colors = true
-          interval = 1
-        }
-
-        order += "volume master"
-        order += "battery all"
-        order += "tztime dotdate"
-        order += "tztime dottime"
-        order += "tztime offset"
-
-        volume master {
-          format = "๐Ÿ”Š: %volume"
-          format_muted = "๐Ÿ”ˆ: %volume"
-          device = "pulse"
-        }
-
-        battery all {
-          format = "%status: %percentage"
-          status_chr = "โšก"
-          status_bat = "๐Ÿ”‹"
-          status_unk = "โ“"
-          status_full = "๐Ÿ’ฏ"
-          low_threshold = 10
-        }
-
-        tztime dotdate {
-          timezone = "UTC"
-          format = "%Y-%m-%d"
-        }
-
-        tztime dottime {
-          timezone = "UTC"
-          format = "%Hยท%M"
-        }
-
-        tztime offset {
-          format = "%z"
-        }
-      '';
+      font = {
+        name = defaultFont;
+        size = 10;
+      };
     };
 
     vuizvui.programs.foot = {
       enable = true;
       settings = {
         font = [
-          "Bitstream Vera Sans Mono"
+          {
+            font = defaultFont;
+            options = { size = 8; };
+          }
           {
             font = "Noto Color Emoji";
             options = { size = 8; };
@@ -287,41 +105,15 @@ in
       };
     };
 
-    environment.variables = {
-      XKB_DEFAULT_LAYOUT = "de";
-      XKB_DEFAULT_VARIANT = "neo";
-      # TODO(sterni) user env?
-      SWAYSOCK = "/run/user/${toString config.users.users.lukas.uid}/sway.sock";
-    };
+    # notifications
+    services.dbus.packages = [ pkgs.mako ];
 
     environment.systemPackages = with pkgs; [
-      startSway
-      xdg_utils
-      networkmanagerapplet # for nm-connection-ediotr
-      imv zathura
-      foot
-      gnome3.nautilus
+      bemenu                     # better dmenu
+      xwayland qt5.qtwayland
+      wl-clipboard               # instead of xsel
+      grim slurp screenshot      # screenshots
+      mako                       # notifications
     ];
-
-    # allow ydotool to use /dev/uinput
-    # services.udev.extraRules = ''
-    #   KERNEL=="uinput", GROUP:="uinput", MODE:="0660"
-    # '';
-    # users.groups.uinput = {};
-    # users.users.lukas.extraGroups = [ "uinput" ];
-
-    # based on https://nixos.wiki/Sway
-    systemd.user = {
-      services.sway = {
-        bindsTo = [ "graphical-session.target" ];
-        wants = [ "graphical-session-pre.target" ];
-        after = [ "graphical-session-pre.target" ];
-        serviceConfig = {
-          Type = "simple";
-          ExecStart = "${swayService}/bin/sway-service";
-          ExecStop = "${exitSway}/bin/exit-sway";
-        };
-      };
-    };
   };
 }
diff --git a/machines/sternenseemann/wolfgang.nix b/machines/sternenseemann/wolfgang.nix
index dc291a07..aeea9b44 100644
--- a/machines/sternenseemann/wolfgang.nix
+++ b/machines/sternenseemann/wolfgang.nix
@@ -100,11 +100,16 @@ in {
     audacity
     signal-desktop tdesktop discord
     multimc
-    vuizvui.sternenseemann.t
-    hunspell
     vuizvui.profpatsch.nman
+    vuizvui.sternenseemann.tep
+    vuizvui.sternenseemann.t
+    xdg_utils                  # xdg-open etc.
+    networkmanagerapplet       # for nm-connection-ediotr
+    imv zathura
+    gnome3.nautilus
     firefox-wayland
     # TODO(sterni) depot.users.sterni.clhs-lookup
+    hunspell
   ] ++ (with hunspellDicts; [ de-de en-gb-large en-us ]);
 
   services.tor = {