summaryrefslogtreecommitdiff
path: root/hosts/local
diff options
context:
space:
mode:
Diffstat (limited to 'hosts/local')
-rw-r--r--hosts/local/keyboards/thinkpad-usb.kbd101
-rw-r--r--hosts/local/p16/configuration.nix94
-rw-r--r--hosts/local/p16/default.nix6
-rw-r--r--hosts/local/p16/hardware-configuration.nix41
-rw-r--r--hosts/local/p16/oldconf.nix107
-rw-r--r--hosts/local/p16/swayconfig290
-rw-r--r--hosts/local/p16/waybarconfig135
-rw-r--r--hosts/local/p16/waybarstyle.css103
-rw-r--r--hosts/local/sway.nix3
9 files changed, 879 insertions, 1 deletions
diff --git a/hosts/local/keyboards/thinkpad-usb.kbd b/hosts/local/keyboards/thinkpad-usb.kbd
new file mode 100644
index 0000000..7fb53d2
--- /dev/null
+++ b/hosts/local/keyboards/thinkpad-usb.kbd
@@ -0,0 +1,101 @@
+;; one liner comments ';;'
+#| Multiline
+ comments |#
+
+(defcfg ;; For linux & by-id lists pluggable devices
+;; If a key is not bound/left_empty(_) then it will fall back to the previous
+;; layer's binding if not then default.
+fallthrough true
+;; To run system commands. You MIGHT face issues with tiling window managers due to command helpers.
+;; allow-cmd true
+;; use 'ls /dev/input/by-id/' for detachable keyboards and
+;; 'ls /dev/input/by-path/' for builtin keyboards location'
+input (device-file "/dev/input/by-id/usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-event-kbd")
+;; Not sure what this does. Please check the docs.
+output (uinput-sink "My KMonad output")
+)
+
+;; This is the real representation of your actual keyboard. We haven't started
+;; customizing layouts yet.
+(defsrc
+ esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 del
+ ` 1 2 3 4 5 6 7 8 9 0 - = bspc
+ tab q w e r t y u i o p [ ] \
+ caps a s d f g h j k l ; ' ret
+ lsft z x c v b n m , . / rsft up
+ lctl lmet lalt spc ralt rctl left down right
+)
+;; Aliases
+
+(defalias
+;; Layer toggles
+sym (layer-toggle syms)
+sym2 (layer-toggle syms2)
+cords (sticky-key 1000 (layer-toggle mods))
+;;
+hrt (layer-switch homerowmods)
+back (layer-switch qwerty)
+
+;; Homerow keys
+a (tap-hold-next-release 280 a lctl)
+s (tap-hold-next-release 280 s lalt)
+d (tap-hold-next-release 280 d lmet)
+f (tap-hold-next-release 280 f lsft)
+;;
+j (tap-hold-next-release 280 j rsft)
+k (tap-hold-next-release 280 k lmet)
+l (tap-hold-next-release 280 l lalt)
+semi (tap-hold-next-release 280 ; rctl)
+
+;; button to launch brave browser
+;; veeb (cmd-button "brave")
+;; ssf (sticky-key 500 (layer-toggle rshift))
+;; rsf (layer-toggle rshift)
+)
+
+;; The first custom layer is the one that gets activated when kmonad is started
+(deflayer qwerty ;; The default layer that'd be read when you launch kmonad
+ esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 del
+ ` 1 2 3 4 5 6 7 8 9 0 - = bspc
+ tab q w e r t y u i o p [ ] \
+ esc a s d f g h j k l ; ' ret
+ @sym z x c v b n m , . / rsft up
+ lctl lmet @sym spc @cords @hrt left down right
+)
+(deflayer homerowmods
+ esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 del
+ ` 1 2 3 4 5 6 7 8 9 0 - = bspc
+ tab q w e r t y u i o p [ ] \
+ esc @a @s @d @f g h @j @k @l @semi ' ret
+ @sym z x c v b n m , . / rsft up
+ lctl lmet @sym spc lalt @back left down right
+)
+(deflayer mods
+ esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 del
+ ` 1 2 3 4 5 6 7 8 9 0 - = bspc
+ tab q w e r t y u i o p [ ] h
+ esc lctl lalt lmet lsft g h rsft rmet ralt rctl ' ret
+ @sym z x c v b n m , . / rsft up
+ lctl lmet @sym spc lalt @back left down right
+)
+
+;; A layer dedicated to symbols
+(deflayer syms
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ _ _ _ up _ _ ! @ # $ % _ _ _
+ _ _ left down right @sym2 ' ^ & - = _ ret
+ _ _ _ _ _ _ \( [ { < \ _ _
+ _ _ _ _ _ _ _ _ _
+)
+
+
+;; More symbols
+(deflayer syms2
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ _ _ _ _ _ _ ` ~ * \_ + _ ret
+ _ _ _ _ _ _ \) ] } > | _ _
+ _ _ _ _ _ _ _ _ _
+)
diff --git a/hosts/local/p16/configuration.nix b/hosts/local/p16/configuration.nix
new file mode 100644
index 0000000..e0b81ca
--- /dev/null
+++ b/hosts/local/p16/configuration.nix
@@ -0,0 +1,94 @@
+# Edit this configuration file to define what should be installed on
+# your system. Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+{
+ inputs,
+ pkgs,
+ ...
+}:
+# let
+# wrappers =
+# inputs.wrapper-manager.lib.build
+# {
+# inherit pkgs;
+# modules = [
+# ../../../wrappers/chromium
+# ../../../wrappers/brave
+# ../../../wrappers/zellij
+# ../../../wrappers/alacritty
+# ];
+# };
+# in
+{
+ imports = [
+ # Include the results of the hardware scan.
+ ../../base.nix
+ ../../linux.nix
+ # ../../syncthing.nix
+ # ../../unfree.nix
+ ../wayland.nix
+ ../gui.nix
+ # ./keyboard.nix
+ # ../android.nix
+ ];
+
+ # environment.systemPackages = [
+ # wrappers
+ # ];
+ #
+
+ nixpkgs.config = {
+ allowUnfree = true;
+ };
+ environment = {
+ etc = {
+ "sway/config".source = ./swayconfig;
+ "xdg/waybar/config".source = ./waybarconfig;
+ "xdg/waybar/styles.css".source = ./waybarstyle.css;
+ };
+ };
+
+ # Use the systemd-boot EFI boot loader.
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+ # boot.supportedFilesystems = ["ntfs"];
+ # boot.kernelPackages = lib.mkForce unfreePkgs.linuxKernel.packages.linux_xanmod_latest;
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+
+ networking = {
+ hostName = "p16"; # Define your hostname.
+ firewall.enable = false;
+ };
+ nix.settings.trusted-users = ["root" "y"];
+
+ # Set your time zone.
+ time.timeZone = "Asia/Bangkok";
+ # time.timeZone = "Europe/Madrid";
+
+ # List services that you want to enable:
+
+ services.openssh.enable = true;
+ services.openssh.ports = [5555];
+
+ #flatpak
+ # services.flatpak.enable = true;
+ # xdg.portal.enable = true;
+ #/flatpak
+ # don't sleep if closed lid;
+ #services.logind.lidSwitchExternalPower = "ignore";
+ #services.logind.lidSwitchDocked = "ignore";
+ #services.logind.lidSwitch = "ignore";
+
+ services.tailscale = {
+ enable = true;
+ useRoutingFeatures = "both";
+ };
+ # This value determines the NixOS release from which the default
+ # settings for stateful data, like file locations and database versions
+ # on your system were taken. It‘s perfectly fine and recommended to leave
+ # this value at the release version of the first install of this system.
+ # Before changing this value read the documentation for this option
+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
+
+ system.stateVersion = "25.05"; # Did you read the comment?
+}
diff --git a/hosts/local/p16/default.nix b/hosts/local/p16/default.nix
new file mode 100644
index 0000000..edd555a
--- /dev/null
+++ b/hosts/local/p16/default.nix
@@ -0,0 +1,6 @@
+inputs: [
+ inputs.kmonad.nixosModules.default
+ inputs.nixos-hardware.nixosModules.lenovo-thinkpad-p16s-amd-gen4
+ ./hardware-configuration.nix
+ ./configuration.nix
+]
diff --git a/hosts/local/p16/hardware-configuration.nix b/hosts/local/p16/hardware-configuration.nix
new file mode 100644
index 0000000..a585bb9
--- /dev/null
+++ b/hosts/local/p16/hardware-configuration.nix
@@ -0,0 +1,41 @@
+# Do not modify this file! It was generated by ‘nixos-generate-config’
+# and may be overwritten by future invocations. Please make changes
+# to /etc/nixos/configuration.nix instead.
+{ config, lib, pkgs, modulesPath, ... }:
+
+{
+ imports =
+ [ (modulesPath + "/installer/scan/not-detected.nix")
+ ];
+
+ boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "uas" "sd_mod" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-amd" ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/707586ec-e92a-4cc4-ac53-19630f27f09c";
+ fsType = "ext4";
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/89FB-484A";
+ fsType = "vfat";
+ options = [ "fmask=0077" "dmask=0077" ];
+ };
+
+ swapDevices =
+ [ { device = "/dev/disk/by-uuid/0a0a5bc3-df1d-4b0f-aaea-04be51d102b0"; }
+ ];
+
+ # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+ # (the default) this is the recommended approach. When using systemd-networkd it's
+ # still possible to use this option, but it's recommended to use it in conjunction
+ # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp195s0f0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp194s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/hosts/local/p16/oldconf.nix b/hosts/local/p16/oldconf.nix
new file mode 100644
index 0000000..c7b0465
--- /dev/null
+++ b/hosts/local/p16/oldconf.nix
@@ -0,0 +1,107 @@
+# Edit this configuration file to define what should be installed on
+# your system. Help is available in the configuration.nix(5) man page
+# and in the NixOS manual (accessible by running ‘nixos-help’).
+
+{ config, pkgs, ... }:
+
+{
+ imports =
+ [ # Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ ];
+
+ # Bootloader.
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+
+ # Use latest kernel.
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+
+ networking.hostName = "nixos"; # Define your hostname.
+ # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
+
+ # Configure network proxy if necessary
+ # networking.proxy.default = "http://user:password@proxy:port/";
+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
+
+ # Enable networking
+ networking.networkmanager.enable = true;
+
+ # Set your time zone.
+ time.timeZone = "Asia/Bangkok";
+
+ # Select internationalisation properties.
+ i18n.defaultLocale = "en_US.UTF-8";
+
+ i18n.extraLocaleSettings = {
+ LC_ADDRESS = "en_GB.UTF-8";
+ LC_IDENTIFICATION = "en_GB.UTF-8";
+ LC_MEASUREMENT = "en_GB.UTF-8";
+ LC_MONETARY = "en_GB.UTF-8";
+ LC_NAME = "en_GB.UTF-8";
+ LC_NUMERIC = "en_GB.UTF-8";
+ LC_PAPER = "en_GB.UTF-8";
+ LC_TELEPHONE = "en_GB.UTF-8";
+ LC_TIME = "en_GB.UTF-8";
+ };
+
+ # Configure keymap in X11
+ services.xserver.xkb = {
+ layout = "us";
+ variant = "";
+ };
+
+ # Define a user account. Don't forget to set a password with ‘passwd’.
+ users.users.y = {
+ isNormalUser = true;
+ description = "y";
+ extraGroups = [ "networkmanager" "wheel" ];
+ packages = with pkgs; [];
+ };
+
+ # Enable automatic login for the user.
+ services.getty.autologinUser = "y";
+services.openssh.enable = true;
+
+nix.extraOptions = ''
+ experimental-features = nix-command flakes
+ '';
+
+ # List packages installed in system profile. To search, run:
+ # $ nix search wget
+ environment.systemPackages = with pkgs; [
+ # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
+ # wget
+ git
+ helix
+ wget
+ ];
+
+ # Some programs need SUID wrappers, can be configured further or are
+ # started in user sessions.
+ # programs.mtr.enable = true;
+ # programs.gnupg.agent = {
+ # enable = true;
+ # enableSSHSupport = true;
+ # };
+
+ # List services that you want to enable:
+
+ # Enable the OpenSSH daemon.
+ # services.openssh.enable = true;
+
+ # Open ports in the firewall.
+ # networking.firewall.allowedTCPPorts = [ ... ];
+ # networking.firewall.allowedUDPPorts = [ ... ];
+ # Or disable the firewall altogether.
+ # networking.firewall.enable = false;
+
+ # This value determines the NixOS release from which the default
+ # settings for stateful data, like file locations and database versions
+ # on your system were taken. It‘s perfectly fine and recommended to leave
+ # this value at the release version of the first install of this system.
+ # Before changing this value read the documentation for this option
+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
+ system.stateVersion = "25.05"; # Did you read the comment?
+
+}
diff --git a/hosts/local/p16/swayconfig b/hosts/local/p16/swayconfig
new file mode 100644
index 0000000..09745dc
--- /dev/null
+++ b/hosts/local/p16/swayconfig
@@ -0,0 +1,290 @@
+# Default config for sway
+#
+# Copy this to ~/.config/sway/config and edit it to your liking.
+#
+# Read `man 5 sway` for a complete reference.
+
+### Variables
+#
+# Logo key. Use Mod1 for Alt.
+set $mod Mod4
+# Home row direction keys, like vim
+set $left h
+set $down j
+set $up k
+set $right l
+# Your preferred terminal emulator
+set $term alacritty
+# Your preferred application launcher
+# Note: pass the final command to swaymsg so that the resulting window can be opened
+# on the original workspace that the command was run on.
+##y set $menu dmenu_path | dmenu | xargs swaymsg exec --
+set $menu wofi -S run -G -Q
+### Output configuration
+#
+# Default wallpaper (more resolutions are available in /run/current-system/sw/share/backgrounds/sway/)
+set $wallpapers_path $HOME/wallpapers/4k
+output * bg `find $wallpapers_path -type f | shuf -n 1` fill
+# output * bg /run/current-system/sw/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
+#
+# Example configuration:
+#
+# output HDMI-A-1 resolution 3840 × 2160 position 1920,0
+#
+# You can get the names of your outputs by running: swaymsg -t get_outputs
+
+### Idle configuration
+#
+# Example configuration:
+#
+ exec swayidle -w \
+ timeout 3000 'swaylock -f -c 000000' \
+ timeout 6000 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
+ before-sleep 'swaylock -f -c 000000'
+#
+#
+# start IME
+exec fcitx5
+# This will lock your screen after 300 seconds of inactivity, then turn off
+# your displays after another 300 seconds, and turn your screens back on when
+# resumed. It will also lock your screen before your computer goes to sleep.
+
+### Input configuration
+#
+# Example configuration:
+#
+# input "2:14:SynPS/2_Synaptics_TouchPad" {
+# dwt enabled
+# tap enabled
+# natural_scroll enabled
+# middle_emulation enabled
+# }
+#
+# You can get the names of your inputs by running: swaymsg -t get_inputs
+# Read `man 5 sway-input` for more information about this section.
+input * xkb_numlock enabled
+### Key bindings
+#
+# Basics:
+#
+ # Start a terminal
+ bindsym $mod+Return exec $term
+
+ # Kill focused window
+ bindsym $mod+Shift+q kill
+
+ # Start your launcher
+ bindsym $mod+d exec $menu
+
+ # Drag floating windows by holding down $mod and left mouse button.
+ # Resize them with right mouse button + $mod.
+ # Despite the name, also works for non-floating windows.
+ # Change normal to inverse to use left mouse button for resizing and right
+ # mouse button for dragging.
+ floating_modifier $mod normal
+
+ # Reload the configuration file
+ bindsym $mod+Shift+c reload
+
+ # Exit sway (logs you out of your Wayland session)
+ bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
+#
+# Moving around:
+#
+ # Move your focus around
+ bindsym $mod+$left focus left
+ bindsym $mod+$down focus down
+ bindsym $mod+$up focus up
+ bindsym $mod+$right focus right
+ # Or use $mod+[up|down|left|right]
+ bindsym $mod+Left focus left
+ bindsym $mod+Down focus down
+ bindsym $mod+Up focus up
+ bindsym $mod+Right focus right
+
+ # Move the focused window with the same, but add Shift
+ bindsym $mod+Shift+$left move left
+ bindsym $mod+Shift+$down move down
+ bindsym $mod+Shift+$up move up
+ bindsym $mod+Shift+$right move right
+ bindsym $mod+Shift+Left move left
+ bindsym $mod+Shift+Down move down
+ bindsym $mod+Shift+Up move up
+ bindsym $mod+Shift+Right move right
+
+
+ # Workspaces:
+#
+ # Switch to workspace
+ bindsym $mod+n workspace prev
+ bindsym $mod+m workspace next
+ bindsym $mod+Shift+n move container to workspace prev
+ bindsym $mod+Shift+m move container to workspace next
+ #move workspace to current output
+ set $cycle node ~/dotfiles/shell/swaycycle.mjs
+ bindsym $mod+comma exec $cycle
+ bindsym $mod+Shift+comma move workspace to output down
+#
+ bindsym $mod+1 workspace number 1
+ bindsym $mod+2 workspace number 2
+ bindsym $mod+3 workspace number 3
+ bindsym $mod+4 workspace number 4
+ bindsym $mod+5 workspace number 5
+ bindsym $mod+6 workspace number 6
+ bindsym $mod+7 workspace number 7
+ bindsym $mod+8 workspace number 8
+ bindsym $mod+9 workspace number 9
+ bindsym $mod+0 workspace number 10
+ # Move focused container to workspace
+ bindsym $mod+Shift+1 move container to workspace number 1
+ bindsym $mod+Shift+2 move container to workspace number 2
+ bindsym $mod+Shift+3 move container to workspace number 3
+ bindsym $mod+Shift+4 move container to workspace number 4
+ bindsym $mod+Shift+5 move container to workspace number 5
+ bindsym $mod+Shift+6 move container to workspace number 6
+ bindsym $mod+Shift+7 move container to workspace number 7
+ bindsym $mod+Shift+8 move container to workspace number 8
+ bindsym $mod+Shift+9 move container to workspace number 9
+ bindsym $mod+Shift+0 move container to workspace number 10
+ # Note: workspaces can have any name you want, not just numbers.
+ # We just use 1-10 as the default.
+#
+# Layout stuff:
+#
+ # You can "split" the current object of your focus with
+ # $mod+b or $mod+v, for horizontal and vertical splits
+ # respectively.
+ bindsym $mod+b splith
+ bindsym $mod+v splitv
+
+ # Switch the current container between different layout styles
+ bindsym $mod+s layout stacking
+ bindsym $mod+w layout tabbed
+ bindsym $mod+e layout toggle split
+
+ # Make the current focus fullscreen
+ bindsym $mod+f fullscreen
+
+ # Toggle the current focus between tiling and floating mode
+ bindsym $mod+Shift+space floating toggle
+
+ # Swap focus between the tiling area and the floating area
+ bindsym $mod+space focus mode_toggle
+
+ # Move focus to the parent container
+ bindsym $mod+a focus parent
+#
+# Scratchpad:
+#
+ # Sway has a "scratchpad", which is a bag of holding for windows.
+ # You can send windows there and get them back later.
+
+ # Move the currently focused window to the scratchpad
+ bindsym $mod+Shift+minus move scratchpad
+
+ # Show the next scratchpad window or hide the focused scratchpad window.
+ # If there are multiple scratchpad windows, this command cycles through them.
+ bindsym $mod+minus scratchpad show
+#
+# Resizing containers:
+#
+mode "resize" {
+ # left will shrink the containers width
+ # right will grow the containers width
+ # up will shrink the containers height
+ # down will grow the containers height
+ bindsym $left resize shrink width 10px
+ bindsym $down resize grow height 10px
+ bindsym $up resize shrink height 10px
+ bindsym $right resize grow width 10px
+
+ # Ditto, with arrow keys
+ bindsym Left resize shrink width 10px
+ bindsym Down resize grow height 10px
+ bindsym Up resize shrink height 10px
+ bindsym Right resize grow width 10px
+
+ # Return to default mode
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+bindsym $mod+r mode "resize"
+
+## function keys
+bindsym XF86AudioMute exec pactl set-sink-mute 0 toggle
+bindsym XF86AudioLowerVolume exec pactl set-sink-volume 0 -5%
+bindsym XF86AudioRaiseVolume exec pactl set-sink-volume 0 +5%
+bindsym XF86AudioPrev exec playerctl previous
+bindsym XF86AudioPlay exec playerctl play-pause
+bindsym XF86AudioNext exec playerctl next
+bindsym XF86MonBrightnessDown exec brigthnessctl -c backlight set 5%-
+bindsym XF86MonBrightnessUp exec brightnessctl -c backlight set +5%
+# bindsym Super_L exec
+# bindsym XF86RFKill exec
+# bindsym Print exec $smallshot
+# bindsym XF86AudioMedia exec
+
+
+#
+# Status Bar:
+#
+# Read `man 5 sway-bar` for more information about this section.
+#bar {
+# position top
+
+ # When the status_command prints a new line to stdout, swaybar updates.
+ # The default just shows the current date and time.
+# status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
+
+ # colors {
+ # statusline #ffffff
+ # background #323232
+ # inactive_workspace #32323200 #32323200 #5c5c5c
+ # }
+#}
+bar {
+ swaybar_command waybar
+}
+input type:touchpad {
+ click_method clickfinger
+ tap enabled
+ dwt enabled
+ pointer_accel 0.3
+ accel_profile adaptive
+}
+
+
+# Screenshosts
+set $screenshot grim -o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') ~/Screenshots/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png
+bindsym $mod+p exec $screenshot
+set $smallshot grim -t jpeg -g "$(slurp)" ~/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
+bindsym $mod+Alt+p exec $smallshot
+set $smallcopy grim -g "$(slurp)" -t png - | wl-copy -t image/png
+bindsym $mod+Shift+p exec $smallcopy
+# bindsym $mod+Shift+p exec grim -t jpeg -g "$(slurp)" ~/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
+
+# Res scaling
+output eDP-1 scale 1.7
+# monitor layout
+output DP-3 transform 270
+# position depends on scaled resolution! if you changed the scale be careful
+# output DP-3 pos 0 0
+#output eDP-1 pos 0 1920
+#output DP-3 resolution 3440x1400 pos 1080 300 scale 1.2
+# thanks claude
+
+# Titlebars
+#
+# default_border none
+# default_floating_border none
+font pango:monospace 0.001
+#titlebar_padding 1
+#titlebar_border_thickness 0
+# hide_edge_borders smart
+
+# mouse cursors
+seat * xcursor_theme hicolor 48
+# this stops screen sharing from working wtf
+# output * render_bit_depth 10
+include /etc/sway/config.d/*
+
diff --git a/hosts/local/p16/waybarconfig b/hosts/local/p16/waybarconfig
new file mode 100644
index 0000000..20cea00
--- /dev/null
+++ b/hosts/local/p16/waybarconfig
@@ -0,0 +1,135 @@
+{
+ // "layer": "top", // Waybar at top layer
+ "position": "bottom", // Waybar position (top|bottom|left|right)
+ // "output": "DP-1",
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["sway/mode", "sway/window"],
+ "modules-center": ["sway/workspaces"],
+ "modules-right": ["pulseaudio", "network", "bluetooth", "idle_inhibitor", "cpu", "backlight", "battery", "clock", "tray"],
+ // Modules configuration
+ "sway/workspaces": {
+ "disable-scroll": true,
+ "all-outputs": true,
+ "format": "{name}: {icon}",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "",
+ "4": "",
+ "5": "",
+ "urgent": "",
+ "focused": "",
+ "default": ""
+ }
+ },
+ // "keyboard-state": {
+ // "numlock": true,
+ // "capslock": true,
+ // "format": " {icon} {name}",
+ // "format-icons": {
+ // "locked": "",
+ // "unlocked": ""
+ // }
+ // },
+ "sway/mode": {
+ "format": "<span style=\"italic\">{}</span>"
+ },
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "clock": {
+ "timezone": "Asia/Bangkok",
+ "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
+ "format-alt": "{:%Y-%m-%d}"
+ },
+ "cpu": {
+ "format": "",
+ },
+ "memory": {
+ "format": ""
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
+ "critical-threshold": 80,
+ // "format-critical": "{temperatureC}°C {icon}",
+ "format": "{icon}",
+ "format-icons": ["", "", ""]
+ },
+ "backlight": {
+ "format": "{icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", ""],
+ "on-scroll-up": "brightnessctl -c backlight set +1%",
+ "on-scroll-down": "brightnessctl -c backlight set 1%-"
+ },
+ "battery": {
+ "states": {
+ "good": 95,
+ "warning": 15,
+ "critical": 7
+ },
+ "format": "{icon} {capacity}%",
+ // "format-charging": " {capacity}%",
+ "format-charging": " {capacity}%",
+ "format-plugged": "",
+ "format-alt": "{icon} {time}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "",
+ "format-ethernet": "",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{icon}",
+ "format-bluetooth": "{icon} {volume}% {format_source}",
+ "format-bluetooth-muted": " {icon} {format_source}",
+ "format-muted": " {format_source}",
+ "format-source": "",
+ "format-source-muted": "",
+ // "format-source-muted": "",
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": ["", "", ""]
+ },
+ "on-click": "pavucontrol"
+ },
+ "custom/fcitx5": {
+ "format": "{}",
+ "return-type": "json",
+ "exec": "~/dotfiles/waybar/fcitx5-status.sh",
+ "interval": 1
+ },
+ "bluetooth": {
+ "format": "{icon}",
+ "format-icons": {
+ "enabled": "",
+ "disabled": ""
+ },
+ "tooltip-format": "{}",
+ "on-click": "blueman-manager"
+ }
+}
diff --git a/hosts/local/p16/waybarstyle.css b/hosts/local/p16/waybarstyle.css
new file mode 100644
index 0000000..97e65e2
--- /dev/null
+++ b/hosts/local/p16/waybarstyle.css
@@ -0,0 +1,103 @@
+* {
+ border: none;
+ border-radius: 0;
+ font-family: "Ubuntu Nerd Font";
+ font-size: 13px;
+ min-height: 0;
+}
+
+window#waybar {
+ background: transparent;
+ color: white;
+}
+
+#window {
+ margin-left: 1rem;
+ font-weight: bold;
+ font-family: "Ubuntu";
+}
+/*
+#workspaces {
+ padding: 0 5px;
+}
+*/
+
+#workspaces button {
+ padding: 0 5px;
+ background: transparent;
+ color: white;
+ border-top: 2px solid transparent;
+}
+
+#workspaces button.focused {
+ color: #c9545d;
+ border-top: 2px solid #c9545d;
+}
+
+#mode {
+ background: #64727D;
+ border-bottom: 3px solid white;
+}
+
+#bluetooth, #idle_inhibitor, #temperature, #backlight, #clock, #battery, #cpu, #memory, #network, #pulseaudio, #custom-spotify, #tray, #mode {
+ padding: 5px;
+ margin: 2px;
+ border-radius: 3rem;
+ background-color: rgb(10, 10, 10);
+}
+
+#clock {
+ font-weight: bold;
+}
+
+#battery {
+}
+
+#battery icon {
+ color: red;
+}
+
+#battery.charging {
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ color: black;
+ }
+}
+
+#battery.warning:not(.charging) {
+ color: white;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+#cpu {
+}
+
+#memory {
+}
+
+#network {
+}
+
+#network.disconnected {
+ background: #f53c3c;
+}
+
+#pulseaudio {
+}
+
+#pulseaudio.muted {
+}
+
+#custom-spotify {
+ color: rgb(102, 220, 105);
+}
+
+#tray {
+}
diff --git a/hosts/local/sway.nix b/hosts/local/sway.nix
index e881fec..4a91216 100644
--- a/hosts/local/sway.nix
+++ b/hosts/local/sway.nix
@@ -43,7 +43,8 @@
playerctl
blueman
wdisplays
- inputs.waybar.packages.x86_64-linux.default
+ # inputs.waybar.packages.x86_64-linux.default
+ waybar
glxinfo
vulkan-tools
glmark2