infrastructure

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 06c4331318d38e936051d45bd6f9f4e2cef18ccf
parent bc7968ae42989254dc16068ea4813d313ef50821
Author: Silas Brack <silasbrack@gmail.com>
Date:   Wed, 20 May 2026 22:15:55 +0200

feat: dwl improvements

Diffstat:
Mhosts/gaia/configuration.nix | 81++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
Mhosts/gaia/dwl_config.h | 6++++++
2 files changed, 62 insertions(+), 25 deletions(-)

diff --git a/hosts/gaia/configuration.nix b/hosts/gaia/configuration.nix @@ -74,12 +74,32 @@ }; services.displayManager.ly.enable = true; - programs.dwl = { - enable = true; - package = (pkgs.dwl.override { - configH = ./dwl_config.h; - }); - }; + programs.dwl = + let + dwl-autostart = pkgs.writeShellScript "dwl-autostart" '' + ${pkgs.wl-clipboard}/bin/wl-paste --type text --watch ${pkgs.cliphist}/bin/cliphist store & + ${pkgs.wl-clipboard}/bin/wl-paste --type image --watch ${pkgs.cliphist}/bin/cliphist store & + # add other startup bits here: bar, wallpaper, notification daemon, etc. + ''; + + dwl-wrapped = pkgs.symlinkJoin { + name = "dwl"; + paths = [ + (pkgs.dwl.override { + configH = ./dwl_config.h; + }) + ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/dwl \ + --add-flags "-s ${dwl-autostart}" + ''; + }; + in + { + enable = true; + package = dwl-wrapped; + }; services.pulseaudio.enable = false; security.rtkit.enable = true; @@ -109,7 +129,7 @@ subpixel.rgba = "rgb"; defaultFonts = { sansSerif = [ "IBM Plex Sans" ]; - serif = [ "Merriweather" ]; + serif = [ "Merriweather" ]; monospace = [ "JetBrains Mono" ]; }; confPackages = [ @@ -148,6 +168,7 @@ universal-ctags # wmenu + wtype wl-clipboard cliphist grim @@ -155,10 +176,12 @@ ]; nixpkgs.config.allowUnsupportedSystem = true; - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ - # "claude-code" - "spotify" - ]; + nixpkgs.config.allowUnfreePredicate = + pkg: + builtins.elem (lib.getName pkg) [ + # "claude-code" + "spotify" + ]; users.users.silas = { isNormalUser = true; description = "Silas Brack"; @@ -171,7 +194,7 @@ "jackaudio" ]; openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDdP3Rvuv/pjQ/7akONRmId3zx7RE5Wqz+0V6eHy+KlE silasbrack@gmail.com" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDdP3Rvuv/pjQ/7akONRmId3zx7RE5Wqz+0V6eHy+KlE silasbrack@gmail.com" ]; packages = with pkgs; [ # anki @@ -358,14 +381,14 @@ regular6 = "005e8b"; regular7 = "dfd5cf"; - bright0 = "595959"; - bright1 = "d00000"; - bright2 = "008900"; - bright3 = "808000"; - bright4 = "0000ff"; - bright5 = "dd22dd"; - bright6 = "0000ff"; - bright7 = "9f9690"; + bright0 = "595959"; + bright1 = "d00000"; + bright2 = "008900"; + bright3 = "808000"; + bright4 = "0000ff"; + bright5 = "dd22dd"; + bright6 = "0000ff"; + bright7 = "9f9690"; }; }; }; @@ -385,9 +408,9 @@ programs.firefox = { enable = true; - package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {}); + package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true; }) { }); preferences = { - "privacy.resistFingerprinting" = true; + "privacy.resistFingerprinting" = true; "browser.urlbar.quicksuggest.online.enabled" = false; "browser.urlbar.suggest.quicksuggest.sponsored" = false; "browser.ml.chat.enabled" = false; @@ -410,7 +433,13 @@ Default = "Kagi"; # Remove built-ins you don't want - Remove = [ "Google" "Bing" "eBay" "DuckDuckGo" "Perplexity" ]; + Remove = [ + "Google" + "Bing" + "eBay" + "DuckDuckGo" + "Perplexity" + ]; # Add custom engines Add = [ @@ -430,8 +459,10 @@ services.openssh.enable = true; programs.ssh.knownHosts = { - "git.fnarglebeast.com".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEOKImx9KgmG+/ggpuS2z/hXkWu3TgT/xK9fI18tPOI1"; - "github.com".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl"; + "git.fnarglebeast.com".publicKey = + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEOKImx9KgmG+/ggpuS2z/hXkWu3TgT/xK9fI18tPOI1"; + "github.com".publicKey = + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl"; }; services.local.wireguard-client = { diff --git a/hosts/gaia/dwl_config.h b/hosts/gaia/dwl_config.h @@ -115,6 +115,11 @@ static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TA /* commands */ static const char *termcmd[] = { "foot", NULL }; static const char *menucmd[] = { "wmenu-run", NULL }; +static const char *clipcmd[] = { + "sh", "-c", + "cliphist list | wmenu | cliphist decode | wl-copy && wtype -M ctrl -M shift v", + NULL +}; static const Key keys[] = { /* Note that Shift changes certain key codes: 2 -> at, etc. */ @@ -152,6 +157,7 @@ static const Key keys[] = { TAGKEYS( XKB_KEY_8, XKB_KEY_asterisk, 7), TAGKEYS( XKB_KEY_9, XKB_KEY_parenleft, 8), { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Q, killclient, {0} }, + { MODKEY, XKB_KEY_v, spawn, {.v = clipcmd} }, /* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */ { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} },