From 4e0a082cfa9ce13e6bfe45fa93565226667b82fa Mon Sep 17 00:00:00 2001 From: clover caruso Date: Sat, 4 Oct 2025 20:44:38 -0700 Subject: [PATCH 01/27] clover: stuff --- users/clover/configuration.nix | 8 ++++++++ users/clover/home.nix | 13 ++++++++----- users/clover/paperback/configuration.nix | 6 ------ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/users/clover/configuration.nix b/users/clover/configuration.nix index 103b011a987ed79def16b4bae7aef256192e681d..a02a361b99dede3b63eeef4c137f3f6e12e9e63e 100644 --- a/users/clover/configuration.nix +++ b/users/clover/configuration.nix @@ -17,6 +17,14 @@ ]; }; + homebrew = { + enable = true; + casks = [ + "db-browser-for-sqlite" + "alt-tab" + ]; + }; + # system preferences system.defaults = { NSGlobalDomain = { diff --git a/users/clover/home.nix b/users/clover/home.nix index 4f799cb1e39b41021b6abfc173356266bfab50b0..bf3d6838a0719a93f9c88a12d087b6345d6b36cd 100644 --- a/users/clover/home.nix +++ b/users/clover/home.nix @@ -18,7 +18,6 @@ in ]; # packages to install for desktop environments (non-server) desktop = [ - git-town lazygit jjui ]; @@ -30,7 +29,6 @@ in ]; # packages to install on linux desktops linux = [ - reaper # TODO: why does this break on macOS ]; in all ++ (if host.darwin then darwin else linux) ++ (if hostServer then server else desktop); @@ -66,7 +64,9 @@ in g = "git status"; gp = "git pull --rebase && git push"; }; - profileExtra = '' + initContent = '' + export PS1="%{$(tput setaf 207)%}%m%{$(tput setaf 15)%}:%{$(tput setaf 87)%}%~ %{$(tput sgr0)%}$ " + function python() { dirname=$(dirname $1 2>/dev/null) if [ -z "$dirname" ]; then @@ -148,10 +148,10 @@ in }; # ui.graph.style = "square"; revsets = { - log = "ancestors(description(regex:\"^(WIP:|\\\\s*$)\"), 3) | ancestors(immutable_heads(), 2) | ancestors(visible_heads(), 2)"; + log = "ancestors(description(regex:\"^(WIP:|\\\\s+$)\"):: | working_copies() | bookmarks(\"master\")::remote_bookmarks(\"master\") | bookmarks(glob:\"clo/*\")::, 5)"; short-prefixes = "(trunk()..@)::"; }; - templates.log = "hl_wip(self)"; + # templates.log = "hl_wip(self)"; template-aliases = { # log template, highlighting the WIP commits by making everything else faded out @@ -269,6 +269,9 @@ in ssh = { enable = true; + extraConfig = '' + SetEnv TERM=xterm-color + ''; matchBlocks = rec { zenith = { user = "clo"; diff --git a/users/clover/paperback/configuration.nix b/users/clover/paperback/configuration.nix index 33d6590bbae174414152184a49ac07e49f4204a8..87a13d7f8638f6a81a6931539129b22e07a0512c 100644 --- a/users/clover/paperback/configuration.nix +++ b/users/clover/paperback/configuration.nix @@ -1,8 +1,2 @@ _: { - homebrew = { - enable = true; - casks = [ - "db-browser-for-sqlite" - ]; - }; } -- 2.54.0 From 3d450c6f3d1d516a0c07f146debb5bd73d6c9e36 Mon Sep 17 00:00:00 2001 From: clover caruso Date: Thu, 9 Oct 2025 16:12:25 -0700 Subject: [PATCH 02/27] clover: work things --- switch | 9 +++++---- users/clover/home.nix | 5 +++-- users/clover/work/home.nix | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/switch b/switch index bf5697d655d9362730c9db9854db34b7950154fc..04af03eb5978615a646d5094da65c81dc95f7d60 100755 --- a/switch +++ b/switch @@ -1,16 +1,17 @@ #!/bin/sh +set -e +cd "$(dirname "$0")" nh_subcommand="os" fallback_command="nixos-rebuild" -hostname_file="$(dirname "$0")/.hostname" if [ -n "$1" ]; then hostname="$1" -elif [ -f "$hostname_file" ]; then - hostname=$(cat "$hostname_file") +elif [ -f ".hostname" ]; then + hostname=$(cat .hostname) fi if [ -z "$hostname" ]; then hostname="$(hostname)" fi -printf "%s" "$hostname" >"$hostname_file" +printf "%s" "$hostname" >.hostname if [ "$(uname -o)" = "Darwin" ]; then nh_subcommand="darwin" fallback_command="nix run .#darwin-rebuild" diff --git a/users/clover/home.nix b/users/clover/home.nix index bf3d6838a0719a93f9c88a12d087b6345d6b36cd..5158945a91c454f9c5d31521ec2062e4db2066b8 100644 --- a/users/clover/home.nix +++ b/users/clover/home.nix @@ -48,9 +48,10 @@ in settings = { theme = "light:Farmhouse Light,dark:Challenger Deep"; font-family = "AT Name Mono"; - adjust-cursor-thickness = 1; - background-opacity = 0.9; + adjust-cursor-thickness = 2; + background-opacity = 0.95; background-blur = true; + unfocused-split-opacity = 1; }; }; diff --git a/users/clover/work/home.nix b/users/clover/work/home.nix index a5fb595349707f6b857c0e40e4208e08ccdeb756..f1f78f8ac0aaef5a8242939fa6e8f0cfb032132e 100644 --- a/users/clover/work/home.nix +++ b/users/clover/work/home.nix @@ -10,10 +10,10 @@ }; home.packages = with pkgs; [ (bun.overrideAttrs (_: rec { - version = "1.1.17"; + version = "1.2.23"; src = fetchurl { url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-aarch64.zip"; - hash = "sha256-aULgRZ9evcGUhKJ6slLJOg3IEzUeNfIkJF8RDP3YUlo="; + hash = "sha256-IvX6P/9ysNO45+D4BR7K3y5Bkg1HSsYttSeRRICckAU="; }; })) doppler -- 2.54.0 From 091bca5c8f57bbdb3031ef1d5d748ea9331d3677 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Fri, 17 Oct 2025 14:26:24 -0700 Subject: [PATCH 03/27] idk i had working changes --- flake.lock | 152 +++++++++--------------- flake.nix | 3 +- modules/nixos/ld.nix | 1 + packages/exiled_exchange_2/default.nix | 34 ++++++ users/natalie/desktop/configuration.nix | 2 + users/natalie/desktop/home.nix | 3 +- users/natalie/home.nix | 9 +- users/natalie/packages.nix | 4 + 8 files changed, 111 insertions(+), 97 deletions(-) create mode 100644 packages/exiled_exchange_2/default.nix diff --git a/flake.lock b/flake.lock index f0dbb9d1b89b326a865764b2c31c27cf9f18ecfb..c42a8bbac6984eea9419cfdb7a6cf97018cb192f 100644 --- a/flake.lock +++ b/flake.lock @@ -9,11 +9,11 @@ ] }, "locked": { - "lastModified": 1755807717, - "narHash": "sha256-x/IcOa+p9VFYlwXmuNhbZ8ce9As24rqy6uABv+tKacU=", + "lastModified": 1759090813, + "narHash": "sha256-JSJmTtQdxhgcGYtY9VNxX3LyzW3rFs3v+4/V9i/OHmI=", "owner": "tadfisher", "repo": "android-nixpkgs", - "rev": "4316f29f7f3b34c41f2639ae190022fbed60b850", + "rev": "48b8763cc3d2a89c39539da72cc248f1f2450855", "type": "github" }, "original": { @@ -38,11 +38,11 @@ "sf-pro": "sf-pro" }, "locked": { - "lastModified": 1752383772, - "narHash": "sha256-I5Y0gUJS85lGEuuKr+tKSRUpJWeKavE+WmiAHRcyBaU=", + "lastModified": 1758228441, + "narHash": "sha256-3mA9oFuhJ1EHyhPd17g/EuJi4jDYPGhyxkEitdh3Kmc=", "owner": "Lyndeno", "repo": "apple-fonts.nix", - "rev": "875c694d7f0ec2020d7511264907a1f0e3262931", + "rev": "aba9944f6606a69ebedf7bfb723316139eec3f72", "type": "github" }, "original": { @@ -58,11 +58,11 @@ ] }, "locked": { - "lastModified": 1755825449, - "narHash": "sha256-XkiN4NM9Xdy59h69Pc+Vg4PxkSm9EWl6u7k6D5FZ5cM=", + "lastModified": 1758805352, + "narHash": "sha256-BHdc43Lkayd+72W/NXRKHzX5AZ+28F3xaUs3a88/Uew=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "8df64f819698c1fee0c2969696f54a843b2231e8", + "rev": "c48e963a5558eb1c3827d59d21c5193622a1477c", "type": "github" }, "original": { @@ -149,11 +149,11 @@ ] }, "locked": { - "lastModified": 1754487366, - "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "rev": "4524271976b625a4a605beefd893f270620fd751", "type": "github" }, "original": { @@ -185,11 +185,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -200,14 +200,14 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_3" + "systems": "systems_4" }, "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", "owner": "numtide", "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", "type": "github" }, "original": { @@ -220,24 +220,6 @@ "inputs": { "systems": "systems_5" }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "inputs": { - "systems": "systems_6" - }, "locked": { "lastModified": 1710146030, "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", @@ -252,9 +234,9 @@ "type": "github" } }, - "flake-utils_6": { + "flake-utils_5": { "inputs": { - "systems": "systems_7" + "systems": "systems_6" }, "locked": { "lastModified": 1705309234, @@ -314,11 +296,11 @@ ] }, "locked": { - "lastModified": 1755810213, - "narHash": "sha256-QdenO8f0PTg+tC6HuSvngKcbRZA5oZKmjUT+MXKOLQg=", + "lastModified": 1759088654, + "narHash": "sha256-31Xc5bIeqqOJA0Kuk9s7TAMakuyggGHBluP3LqedQiE=", "owner": "nix-community", "repo": "home-manager", - "rev": "6911d3e7f475f7b3558b4f5a6aba90fa86099baa", + "rev": "a97df40c1966cc46b5f6817ac8d8e240da03de96", "type": "github" }, "original": { @@ -342,11 +324,11 @@ }, "mnw": { "locked": { - "lastModified": 1748710831, - "narHash": "sha256-eZu2yH3Y2eA9DD3naKWy/sTxYS5rPK2hO7vj8tvUCSU=", + "lastModified": 1756659871, + "narHash": "sha256-v6Rh4aQ6RKjM2N02kK9Usn0Ix7+OY66vNpeklc1MnGE=", "owner": "Gerg-L", "repo": "mnw", - "rev": "cff958a4e050f8d917a6ff3a5624bc4681c6187d", + "rev": "ed6cc3e48557ba18266e598a5ebb6602499ada16", "type": "github" }, "original": { @@ -357,17 +339,16 @@ }, "moonlight": { "inputs": { - "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1754439168, - "narHash": "sha256-NcwRidwb/ask65LE86os4RkhyoPQo5sLu0sJs/NboK4=", + "lastModified": 1757448266, + "narHash": "sha256-aLjHKVWkb9XHyoMmDBxLG2Ycg4CJFeieLdEg3CWeIwk=", "owner": "moonlight-mod", "repo": "moonlight", - "rev": "66b81b113afd6654a88c9adb7edb7fe92839fe84", + "rev": "83debd7870e77e21694c9a76e3975baf842e435e", "type": "github" }, "original": { @@ -383,11 +364,11 @@ ] }, "locked": { - "lastModified": 1755404379, - "narHash": "sha256-Q6ZxZDBmD/B988Jjbx7/NchxOKIpOKBBrx9Yb0zMzpQ=", + "lastModified": 1759032422, + "narHash": "sha256-WZf+FhebP2/1pK2np5xj/NuDjD6fXK2BHnq/tPUN18o=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "ebbc1c05f786ae39bb5e04e57bf2c10c44a649e3", + "rev": "ec7a78cb0e098832d8acac091a4df393259c4839", "type": "github" }, "original": { @@ -398,16 +379,16 @@ }, "nix-options-search": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_2", "gitignore": "gitignore", "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1743876182, - "narHash": "sha256-qfiVewr5huupheLqStX60JSbjBEm9/PDncLQXE0dsXo=", + "lastModified": 1756245499, + "narHash": "sha256-clSqrE7JPhjGvnPqxLjN8AeadXQUFIGyakQyAywc1BY=", "owner": "madsbv", "repo": "nix-options-search", - "rev": "f52dc6986161570a2ffffdf337c88b503e9a58fb", + "rev": "37cb7d89d8965b53db71b3548c3224612b22c1a1", "type": "github" }, "original": { @@ -434,16 +415,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1755615617, - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "type": "indirect" } }, @@ -487,14 +468,14 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_4" + "systems": "systems_3" }, "locked": { - "lastModified": 1755843058, - "narHash": "sha256-oAajTGcyTzuND7AAlaRXO+wF7ytAMOnrE4sYUjRonB8=", + "lastModified": 1758966217, + "narHash": "sha256-/XLi0+w/3ZbByofmRxTWlimBZbIjur3B56iYONffcv0=", "owner": "notashelf", "repo": "nvf", - "rev": "d36996c8ba5c8d68b5def1b660e06d281ef0a3a8", + "rev": "8e9186e4b88a6f87083b45e1cbea0833facec914", "type": "github" }, "original": { @@ -540,11 +521,11 @@ ] }, "locked": { - "lastModified": 1755830208, - "narHash": "sha256-fMa/Hcg+4O2h+kl3gNPjtGSWPI8NtCl3LYMsejK6qGA=", + "lastModified": 1759027024, + "narHash": "sha256-LTgfljA/X8aGEXk/EUVoLL+0wfJjQAhF/rUQOFsx+/U=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "802a7b97f8ff672ba2dec70c9e354f51f844e796", + "rev": "971d18658c83f3a6a434ac647798141fddce3175", "type": "github" }, "original": { @@ -580,7 +561,7 @@ "sf-compact": { "flake": false, "locked": { - "narHash": "sha256-VMCf2Mhmx/qhLRQxlTAsQWxtonS27kPW+oTYBBRWHMg=", + "narHash": "sha256-WeqT80cdK/XzTLSaJs5DHodzxoeAzwL/xTgdq0YwQbM=", "type": "file", "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" }, @@ -628,7 +609,7 @@ "sf-pro": { "flake": false, "locked": { - "narHash": "sha256-RX6X2ltVE88Hp1g9tpSywMT3UfdLpRxgw92KRpiAues=", + "narHash": "sha256-vprahHpCUf9O8RualBrEuLEfuLfzI/2d8AQmwlCGPPk=", "type": "file", "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" }, @@ -727,21 +708,6 @@ "type": "github" } }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "zen-browser": { "inputs": { "nixpkgs": [ @@ -749,11 +715,11 @@ ] }, "locked": { - "lastModified": 1754886070, - "narHash": "sha256-MZDmxOkVKL1HY72bliN8Gxh0SYkHUa3W/1fTU2ke36I=", + "lastModified": 1758859571, + "narHash": "sha256-/DPe2RNgIzTBHm1tLUF31YswssT7Uz+HJI6VIkmHN6w=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "e37d2b326311320c8571111b3ef89b29d26d4b64", + "rev": "58e5a7b019aa1584ca46e909b011c1f6a91081f0", "type": "github" }, "original": { @@ -765,15 +731,15 @@ "zig": { "inputs": { "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_3", "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1755605615, - "narHash": "sha256-J0Cxren2QLeI0ZvRZw4XGcMm4q3uPIZHM+eJnaZfXX8=", + "lastModified": 1759019783, + "narHash": "sha256-YMpnPm2HlGWo5bmgkhKGrdV+ZzPpbXX5+dmuQd8Ebn0=", "owner": "mitchellh", "repo": "zig-overlay", - "rev": "714fae26049a263ff2e4641ce7c973f371f4b005", + "rev": "ddda205a5f3188662118ee9a9f9bbf9e385f6681", "type": "github" }, "original": { @@ -785,7 +751,7 @@ "zig-overlay": { "inputs": { "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_5", "nixpkgs": [ "zls", "nixpkgs" @@ -807,7 +773,7 @@ }, "zls": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_4", "gitignore": "gitignore_2", "langref": "langref", "nixpkgs": "nixpkgs_4", diff --git a/flake.nix b/flake.nix index 28101b0755d19ad6d382be93307cd255f30fc903..ed6d6e80d91b15e238205cedf6087c8fcf5d23ca 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,7 @@ { description = "multi device configuration flake"; inputs = { - nixpkgs.url = "nixpkgs/nixos-unstable"; + nixpkgs.url = "nixpkgs/nixpkgs-unstable"; home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; @@ -70,6 +70,7 @@ # custom packages (_: pkgs: { autofmt = pkgs.callPackage ./packages/autofmt { }; + exiled_exchange_2 = pkgs.callPackage ./packages/exiled_exchange_2 { }; }) ]; diff --git a/modules/nixos/ld.nix b/modules/nixos/ld.nix index fc09f687d9e8284eefec1395ab68b70c318597a9..cfbf4e05fed55f65b714cd31efa6fe21a2bcd3fb 100644 --- a/modules/nixos/ld.nix +++ b/modules/nixos/ld.nix @@ -6,6 +6,7 @@ programs.nix-ld.libraries = with pkgs; [ # common requirement for several games stdenv.cc.cc.lib + libxcrypt # from https://github.com/NixOS/nixpkgs/blob/nixos-23.05/pkgs/games/steam/fhsenv.nix#L72-L79 xorg.libXcomposite diff --git a/packages/exiled_exchange_2/default.nix b/packages/exiled_exchange_2/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..8413c3bbd97e364a1382defd7d06af914e58e5cd --- /dev/null +++ b/packages/exiled_exchange_2/default.nix @@ -0,0 +1,34 @@ +{ pkgs, lib, ... }: + +let + pname = "exiled-exchange-2"; + version = "0.12.6"; + name = "${pname}-${version}"; + + src = pkgs.fetchurl { + url = "https://github.com/Kvan7/Exiled-Exchange-2/releases/download/v${version}/Exiled-Exchange-2-${version}.AppImage"; + sha256 = "sha256-2CBdsLQ0EHTINd05ABv8NyCYt2ipYfwmkcpw0SLZRwc=="; + }; + + appimageContents = pkgs.appimageTools.extract { inherit pname version src; }; +in +pkgs.appimageTools.wrapType2 rec { + inherit pname version src; + + extraInstallCommands = '' + install -m 444 -D ${appimageContents}/exiled-exchange-2.desktop $out/share/applications/${pname}.desktop + + install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png + + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname} %U' + ''; + + meta = with lib; { + description = "Exiled Exchange 2"; + homepage = "https://kvan7.github.io/Exiled-Exchange-2/"; + license = licenses.mit; + maintainers = [ ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/users/natalie/desktop/configuration.nix b/users/natalie/desktop/configuration.nix index ade64ee3abc72adf0e5e2918d0dfeb9ff90c28e6..baeb2a2011ffae05de7c5565794024c184dc0d27 100644 --- a/users/natalie/desktop/configuration.nix +++ b/users/natalie/desktop/configuration.nix @@ -56,12 +56,14 @@ }; hardware.bluetooth.enable = true; + hardware.graphics.enable = true; xdg.portal = { enable = true; extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; }; virtualisation = { + waydroid.enable = true; containers.enable = true; podman = { enable = true; diff --git a/users/natalie/desktop/home.nix b/users/natalie/desktop/home.nix index 6b220f0b2bc58d2861e9dc5588ff4c6576b147cc..ac05dc489181a0bfba24f9161640dc3e34368f26 100644 --- a/users/natalie/desktop/home.nix +++ b/users/natalie/desktop/home.nix @@ -15,7 +15,7 @@ packages = with pkgs; [ #building macos apps hard :( ghostty - stremio + #stremio broken qtwebengine julia qbittorrent @@ -34,6 +34,7 @@ limo nexusmods-app-unfree protontricks + (pkgs.callPackage ../../../packages/exiled_exchange_2 { }) #window manager stuff wofi diff --git a/users/natalie/home.nix b/users/natalie/home.nix index 9ebe9cb33bcbb2f273c69d43cf1c6feb7313b207..448e7018660df48df450d25ef9ad9bafbdb090af 100644 --- a/users/natalie/home.nix +++ b/users/natalie/home.nix @@ -1,4 +1,9 @@ -{ lib, host, ... }@args: +{ + lib, + host, + pkgs, + ... +}@args: { programs = { # sort-lines:start @@ -21,5 +26,5 @@ }; }; - home.packages = import ./packages.nix args; + home.packages = import ./packages.nix pkgs; } diff --git a/users/natalie/packages.nix b/users/natalie/packages.nix index d10b03e4466f2d4cd97cce17651f866daaa0cff0..cbfbf8a7eaff528e761f7742129f0325d54cc61f 100644 --- a/users/natalie/packages.nix +++ b/users/natalie/packages.nix @@ -18,6 +18,10 @@ with pkgs; typescript-language-server deno + #desktop shit + gtk3 + gtk4 + #ides zed-editor emacs -- 2.54.0 From 970faf03945ee254b2d2e9e161cac7b7b590621a Mon Sep 17 00:00:00 2001 From: clover caruso Date: Wed, 22 Oct 2025 18:18:44 -0700 Subject: [PATCH 04/27] work stuff --- users/clover/home.nix | 29 +++++++++++++++++++++++++---- users/clover/work/home.nix | 4 ++-- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/users/clover/home.nix b/users/clover/home.nix index 5158945a91c454f9c5d31521ec2062e4db2066b8..5fb0d3e278fe30910d702ec5e12ed553fc1461e3 100644 --- a/users/clover/home.nix +++ b/users/clover/home.nix @@ -60,10 +60,16 @@ in enable = true; shellAliases = { switch = "~/config/switch"; - gg = "lazygit"; - ga = "git add"; - g = "git status"; - gp = "git pull --rebase && git push"; + + # move a bookmark from the previous commit + jf = "jj git fetch"; + e = "jj edit"; + d = "jj desc"; + bup = "jj b m --from 'parents(@)' --to '@'"; + push = "jj git push"; + moveself = "jj rebase -r @ -d"; + logall = "jj log -r 'all()'"; + cherry = "jj git fetch && jj split -i -p -m 'SPLIT_CHANGES' && jj edit -r 'description(\"SPLIT_CHANGES\")' && jj desc -m '' --edit"; }; initContent = '' export PS1="%{$(tput setaf 207)%}%m%{$(tput setaf 15)%}:%{$(tput setaf 87)%}%~ %{$(tput sgr0)%}$ " @@ -75,6 +81,21 @@ in fi uv run --project "$dirname" "$@" } + + function pr() { + message=$(jj log -r '@' -T 'description' --no-graph) + if [[ -z "$message" ]] || [[ "$message" = "WIP:"* ]]; then + jj desc + fi + if [ -n "$1" ]; then + jj git push --named "clo/$1"=@ + branch="clo/$1" + else + branch="$(jj log -r '@' -T '"clo/push-" ++ change_id.short()' --no-graph)" + jj git push -c @ + fi + open "$(git remote get-url origin | sed 's/git@github\.com:/https:\/\/github.com\//' | sed 's/\.git$//')/compare/master...$branch" + } ''; }; diff --git a/users/clover/work/home.nix b/users/clover/work/home.nix index f1f78f8ac0aaef5a8242939fa6e8f0cfb032132e..3dcb3ea9c5e53de6b451d59bbcbb3d78a1cff0cf 100644 --- a/users/clover/work/home.nix +++ b/users/clover/work/home.nix @@ -10,10 +10,10 @@ }; home.packages = with pkgs; [ (bun.overrideAttrs (_: rec { - version = "1.2.23"; + version = "1.3.0"; src = fetchurl { url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-aarch64.zip"; - hash = "sha256-IvX6P/9ysNO45+D4BR7K3y5Bkg1HSsYttSeRRICckAU="; + hash = "sha256-hYSOP5ZIHvyr51pQD9O5S5u5VoaretCjiSl2x74VA2o="; }; })) doppler -- 2.54.0 From d046afcbfaca4760a4357b5d653a7220f990ccc3 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Mon, 27 Oct 2025 13:24:28 -0700 Subject: [PATCH 05/27] feat: update inputs --- flake.lock | 72 +++++++++++++++++----------------- modules/home/default.nix | 2 +- users/natalie/desktop/home.nix | 1 - 3 files changed, 37 insertions(+), 38 deletions(-) diff --git a/flake.lock b/flake.lock index c42a8bbac6984eea9419cfdb7a6cf97018cb192f..2c51d073249b25838cc12d7d22fb7ce8b43a6bda 100644 --- a/flake.lock +++ b/flake.lock @@ -9,11 +9,11 @@ ] }, "locked": { - "lastModified": 1759090813, - "narHash": "sha256-JSJmTtQdxhgcGYtY9VNxX3LyzW3rFs3v+4/V9i/OHmI=", + "lastModified": 1761337279, + "narHash": "sha256-xgiGLC5DKRzhtfPRYmePcmQExzLyg2eSYtsoY8BBXbo=", "owner": "tadfisher", "repo": "android-nixpkgs", - "rev": "48b8763cc3d2a89c39539da72cc248f1f2450855", + "rev": "40960a51479c87cdbb3801ed3d27e751700eaf55", "type": "github" }, "original": { @@ -58,11 +58,11 @@ ] }, "locked": { - "lastModified": 1758805352, - "narHash": "sha256-BHdc43Lkayd+72W/NXRKHzX5AZ+28F3xaUs3a88/Uew=", + "lastModified": 1761339987, + "narHash": "sha256-IUaawVwItZKi64IA6kF6wQCLCzpXbk2R46dHn8sHkig=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "c48e963a5558eb1c3827d59d21c5193622a1477c", + "rev": "7cd9aac79ee2924a85c211d21fafd394b06a38de", "type": "github" }, "original": { @@ -149,11 +149,11 @@ ] }, "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "lastModified": 1759362264, + "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", + "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", "type": "github" }, "original": { @@ -296,11 +296,11 @@ ] }, "locked": { - "lastModified": 1759088654, - "narHash": "sha256-31Xc5bIeqqOJA0Kuk9s7TAMakuyggGHBluP3LqedQiE=", + "lastModified": 1761344779, + "narHash": "sha256-6LNSptFYhiAd0M/maJoixJw7V0Kp5BSoMRtIahcfu3M=", "owner": "nix-community", "repo": "home-manager", - "rev": "a97df40c1966cc46b5f6817ac8d8e240da03de96", + "rev": "c644cb018f9fdec55f5ac2afb4713a8c7beb757c", "type": "github" }, "original": { @@ -324,11 +324,11 @@ }, "mnw": { "locked": { - "lastModified": 1756659871, - "narHash": "sha256-v6Rh4aQ6RKjM2N02kK9Usn0Ix7+OY66vNpeklc1MnGE=", + "lastModified": 1758834834, + "narHash": "sha256-Y7IvY4F8vajZyp3WGf+KaiIVwondEkMFkt92Cr9NZmg=", "owner": "Gerg-L", "repo": "mnw", - "rev": "ed6cc3e48557ba18266e598a5ebb6602499ada16", + "rev": "cfbc7d1cc832e318d0863a5fc91d940a96034001", "type": "github" }, "original": { @@ -344,11 +344,11 @@ ] }, "locked": { - "lastModified": 1757448266, - "narHash": "sha256-aLjHKVWkb9XHyoMmDBxLG2Ycg4CJFeieLdEg3CWeIwk=", + "lastModified": 1761246178, + "narHash": "sha256-lQpl6ecQfQ7KzEIytH3k4hLtvq+KkTL+3IR2ZukdZWM=", "owner": "moonlight-mod", "repo": "moonlight", - "rev": "83debd7870e77e21694c9a76e3975baf842e435e", + "rev": "0b927a86a447a145f20bb5ee43fac79a724640f2", "type": "github" }, "original": { @@ -364,11 +364,11 @@ ] }, "locked": { - "lastModified": 1759032422, - "narHash": "sha256-WZf+FhebP2/1pK2np5xj/NuDjD6fXK2BHnq/tPUN18o=", + "lastModified": 1760846226, + "narHash": "sha256-xmU8kAsRprJiTGBTaGrwmjBP3AMA9ltlrxHKFuy5JWc=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "ec7a78cb0e098832d8acac091a4df393259c4839", + "rev": "5024e1901239a76b7bf94a4cd27f3507e639d49e", "type": "github" }, "original": { @@ -415,11 +415,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1759036355, - "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "lastModified": 1761236834, + "narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1", "type": "github" }, "original": { @@ -471,11 +471,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1758966217, - "narHash": "sha256-/XLi0+w/3ZbByofmRxTWlimBZbIjur3B56iYONffcv0=", + "lastModified": 1761238604, + "narHash": "sha256-xZ8SGSSndcvjZLUrMLrz4DjnPFtjZfSGZzEHPGnS2Eg=", "owner": "notashelf", "repo": "nvf", - "rev": "8e9186e4b88a6f87083b45e1cbea0833facec914", + "rev": "dad8ece966760d5de956ffa69670ffce1a90f3e3", "type": "github" }, "original": { @@ -521,11 +521,11 @@ ] }, "locked": { - "lastModified": 1759027024, - "narHash": "sha256-LTgfljA/X8aGEXk/EUVoLL+0wfJjQAhF/rUQOFsx+/U=", + "lastModified": 1761273263, + "narHash": "sha256-6d6ojnu6A6sVxIjig8OL6E1T8Ge9st3YGgVwg5MOY+Q=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "971d18658c83f3a6a434ac647798141fddce3175", + "rev": "28405834d4fdd458d28e123fae4db148daecec6f", "type": "github" }, "original": { @@ -715,11 +715,11 @@ ] }, "locked": { - "lastModified": 1758859571, - "narHash": "sha256-/DPe2RNgIzTBHm1tLUF31YswssT7Uz+HJI6VIkmHN6w=", + "lastModified": 1761278750, + "narHash": "sha256-H00vsbCQRRutJ6sg7Pijy+pPY0+mafnTWw1MZXdVbh8=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "58e5a7b019aa1584ca46e909b011c1f6a91081f0", + "rev": "1689281237cb389759a005c41545302a54ec8100", "type": "github" }, "original": { @@ -735,11 +735,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1759019783, - "narHash": "sha256-YMpnPm2HlGWo5bmgkhKGrdV+ZzPpbXX5+dmuQd8Ebn0=", + "lastModified": 1760747435, + "narHash": "sha256-wNB/W3x+or4mdNxFPNOH5/WFckNpKgFRZk7OnOsLtm0=", "owner": "mitchellh", "repo": "zig-overlay", - "rev": "ddda205a5f3188662118ee9a9f9bbf9e385f6681", + "rev": "d0f239b887b1ac736c0f3dde91bf5bf2ecf3a420", "type": "github" }, "original": { diff --git a/modules/home/default.nix b/modules/home/default.nix index 64fbd631b34421db740a329ea8f752b863bf684d..6174ec2d4a905f152e48ba4a09494e22a634170a 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -89,7 +89,7 @@ in extraPackages = with pkgs.bat-extras; [ batdiff batman - batgrep + # batgrep batwatch batpipe prettybat diff --git a/users/natalie/desktop/home.nix b/users/natalie/desktop/home.nix index ac05dc489181a0bfba24f9161640dc3e34368f26..e17c10d1460c1bac738c2dd9106297fe75a65a0f 100644 --- a/users/natalie/desktop/home.nix +++ b/users/natalie/desktop/home.nix @@ -16,7 +16,6 @@ #building macos apps hard :( ghostty #stremio broken qtwebengine - julia qbittorrent #gaming -- 2.54.0 From e05f1a7805da3c9821ab73276e873e55148061be Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Wed, 29 Oct 2025 18:02:50 -0700 Subject: [PATCH 06/27] feat: add tmux config --- users/natalie/home.nix | 3 + users/natalie/home/default.nix | 6 ++ users/natalie/home/tmux.nix | 107 +++++++++++++++++++++++++++++++++ users/natalie/packages.nix | 1 - 4 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 users/natalie/home/default.nix create mode 100644 users/natalie/home/tmux.nix diff --git a/users/natalie/home.nix b/users/natalie/home.nix index 448e7018660df48df450d25ef9ad9bafbdb090af..43f27d39f84f27952928fb959dcb481cb7465c82 100644 --- a/users/natalie/home.nix +++ b/users/natalie/home.nix @@ -5,6 +5,9 @@ ... }@args: { + imports = [ + ./home + ]; programs = { # sort-lines:start atuin.enable = true; diff --git a/users/natalie/home/default.nix b/users/natalie/home/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..e1d7054f5eb20ca2e8541e06050e270dca53c57b --- /dev/null +++ b/users/natalie/home/default.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + imports = [ + ./tmux.nix + ]; +} diff --git a/users/natalie/home/tmux.nix b/users/natalie/home/tmux.nix new file mode 100644 index 0000000000000000000000000000000000000000..edf6f008bb2cc6167ce783164f29edbd57fe11b6 --- /dev/null +++ b/users/natalie/home/tmux.nix @@ -0,0 +1,107 @@ +{ pkgs, config, ... }: +let + tmux-nvim = pkgs.tmuxPlugins.mkTmuxPlugin { + pluginName = "tmux.nvim"; + version = "unstable-2025-05-19"; + src = pkgs.fetchFromGitHub { + owner = "aserowy"; + repo = "tmux.nvim/"; + rev = "2c1c3be0ef287073cef963f2aefa31a15c8b9cd8"; + sha256 = "sha256-/XIjqQr9loWVTXZDaZx2bSQgco46z7yam50dCnM5p1U="; + }; + }; + +in +{ + programs.tmux = { + enable = true; + mouse = true; + + shell = "${pkgs.fish}/bin/fish"; + + shortcut = "a"; + keyMode = "vi"; + + plugins = with pkgs.tmuxPlugins; [ + better-mouse-mode + tmux-nvim + tmux-thumbs + cpu + tmux-floax + yank + # must be before continuum edits right status bar + { + plugin = catppuccin; + extraConfig = '' + set -g @catppuccin_flavour "mocha" + set -g @catppuccin_window_status_style "rounded" + + set -g status-right-length 100 + set -g status-left-length 100 + set -g status-left "" + set -g status-right "#{E:@catppuccin_status_application}" + set -ag status-right "#{E:@catppuccin_status_session}" + set -ag status-right "#{E:@catppuccin_status_uptime}" + + ''; + } + { + plugin = resurrect; + extraConfig = '' + set -g @resurrect-strategy-vim 'session' + set -g @resurrect-strategy-nvim 'session' + set -g @resurrect-capture-pane-contents 'on' + '' + + '' + # Taken from: https://github.com/p3t33/nixos_flake/blob/5a989e5af403b4efe296be6f39ffe6d5d440d6d6/home/modules/tmux.nix + resurrect_dir="$XDG_CACHE_HOME/.tmux/resurrect" + set -g @resurrect-dir $resurrect_dir + + set -g @resurrect-hook-post-save-all 'target=$(readlink -f $resurrect_dir/last); sed "s| --cmd .*-vim-pack-dir||g; s|/etc/profiles/per-user/$USER/bin/||g; s|/home/$USER/.nix-profile/bin/||g" $target | sponge $target' + ''; + + } + { + plugin = continuum; + extraConfig = '' + set -g @continuum-restore 'on' + set -g @continuum-boot 'on' + set -g @continuum-save-interval '10' + set -g @continuum-systemd-start-cmd 'start-server' + ''; + } + + ]; + extraConfig = '' + set -g default-terminal "tmux-256color" + set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.local/share/tmux/plugins' + # Easier reload of config + bind r source-file ~/.config/tmux/tmux.conf + # Quicker escape in neovim + set -sg escape-time 0 + set-option -g set-titles on + set-option -g set-titles-string "#S / #W" + + set -g allow-passthrough on + + # '@pane-is-vim' is a pane-local option that is set by the plugin on load, + # and unset when Neovim exits or suspends; note that this means you'll probably + # not want to lazy-load smart-splits.nvim, as the variable won't be set until + # the plugin is loaded + + # Smart pane switching with awareness of Neovim splits. + bind-key -n C-h if -F "#{@pane-is-vim}" 'send-keys C-h' 'select-pane -L' + bind-key -n C-j if -F "#{@pane-is-vim}" 'send-keys C-j' 'select-pane -D' + bind-key -n C-k if -F "#{@pane-is-vim}" 'send-keys C-k' 'select-pane -U' + bind-key -n C-l if -F "#{@pane-is-vim}" 'send-keys C-l' 'select-pane -R' + + # Smart pane resizing with awareness of Neovim splits. + bind-key -n M-h if -F "#{@pane-is-vim}" 'send-keys M-h' 'resize-pane -L 3' + bind-key -n M-j if -F "#{@pane-is-vim}" 'send-keys M-j' 'resize-pane -D 3' + bind-key -n M-k if -F "#{@pane-is-vim}" 'send-keys M-k' 'resize-pane -U 3' + bind-key -n M-l if -F "#{@pane-is-vim}" 'send-keys M-l' 'resize-pane -R 3' + + ''; + }; + +} diff --git a/users/natalie/packages.nix b/users/natalie/packages.nix index cbfbf8a7eaff528e761f7742129f0325d54cc61f..5a280c31a78733af85c510ac97cb52f4a925b804 100644 --- a/users/natalie/packages.nix +++ b/users/natalie/packages.nix @@ -43,7 +43,6 @@ with pkgs; #terminal stuff (btop.override { cudaSupport = true; }) - tmux zellij lazygit fzf -- 2.54.0 From 36e4e6ca3f07e272adc9d2e19f6d350abce70737 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Wed, 29 Oct 2025 20:34:07 -0700 Subject: [PATCH 07/27] feat: add barebones hyprland config --- modules/nixos/services.nix | 17 +++ users/natalie/desktop/configuration.nix | 24 ++- users/natalie/home/default.nix | 1 + users/natalie/home/hyprland/binds.nix | 154 ++++++++++++++++++++ users/natalie/home/hyprland/default.nix | 13 ++ users/natalie/home/hyprland/exec-once.nix | 25 ++++ users/natalie/home/hyprland/hyprland.nix | 30 ++++ users/natalie/home/hyprland/hyprlock.nix | 112 ++++++++++++++ users/natalie/home/hyprland/monitors.nix | 15 ++ users/natalie/home/hyprland/settings.nix | 120 +++++++++++++++ users/natalie/home/hyprland/variables.nix | 29 ++++ users/natalie/home/hyprland/windowrules.nix | 91 ++++++++++++ 12 files changed, 630 insertions(+), 1 deletion(-) create mode 100644 users/natalie/home/hyprland/binds.nix create mode 100644 users/natalie/home/hyprland/default.nix create mode 100644 users/natalie/home/hyprland/exec-once.nix create mode 100644 users/natalie/home/hyprland/hyprland.nix create mode 100644 users/natalie/home/hyprland/hyprlock.nix create mode 100644 users/natalie/home/hyprland/monitors.nix create mode 100644 users/natalie/home/hyprland/settings.nix create mode 100644 users/natalie/home/hyprland/variables.nix create mode 100644 users/natalie/home/hyprland/windowrules.nix diff --git a/modules/nixos/services.nix b/modules/nixos/services.nix index ef9feae71a6c4a24e847da17779522d023138b74..20314be33a994a99e64cfe4c4e0f5866b8d576ef 100644 --- a/modules/nixos/services.nix +++ b/modules/nixos/services.nix @@ -22,6 +22,23 @@ }; }; + gvfs.enable = true; + + gnome = { + tinysparql.enable = true; + gnome-keyring.enable = true; + }; + + fstrim.enable = true; + + dbus = { + enable = true; + packages = [ + pkgs.gcr + pkgs.gnome-settings-daemon + ]; + }; + # Auto mount devices udisks2 = { enable = true; diff --git a/users/natalie/desktop/configuration.nix b/users/natalie/desktop/configuration.nix index baeb2a2011ffae05de7c5565794024c184dc0d27..4c02281c5ba27e7b623f71cf2f8f5ab421d20102 100644 --- a/users/natalie/desktop/configuration.nix +++ b/users/natalie/desktop/configuration.nix @@ -35,7 +35,19 @@ steam = { enable = true; - package = with pkgs; steam.override { extraPkgs = pkgs: [ attr ]; }; + remotePlay.openFirewall = true; + + gamescopeSession.enable = true; + extraCompatPackages = [ pkgs.proton-ge-bin ]; + }; + + gamescope = { + enable = true; + capSysNice = true; + args = [ + "--rt" + "--expose-wayland" + ]; }; git = { @@ -60,6 +72,15 @@ xdg.portal = { enable = true; + xdgOpenUsePortal = true; + config = { + common.default = [ "gtk" ]; + hyprland.default = [ + "gtk" + "hyprland" + ]; + }; + extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; }; virtualisation = { @@ -85,6 +106,7 @@ hibernate.enable = false; hybrid-sleep.enable = false; }; + settings.Manager.DefaultTimeoutStopSec = "10s"; services.monitord.wantedBy = [ "multi-user.target" ]; }; diff --git a/users/natalie/home/default.nix b/users/natalie/home/default.nix index e1d7054f5eb20ca2e8541e06050e270dca53c57b..1a3bf2f38624b363453063a9e2681e1e6bbfa469 100644 --- a/users/natalie/home/default.nix +++ b/users/natalie/home/default.nix @@ -2,5 +2,6 @@ { imports = [ ./tmux.nix + ./hyprland ]; } diff --git a/users/natalie/home/hyprland/binds.nix b/users/natalie/home/hyprland/binds.nix new file mode 100644 index 0000000000000000000000000000000000000000..edac51ecfc9fda34b1fa911b91ccc507959080ab --- /dev/null +++ b/users/natalie/home/hyprland/binds.nix @@ -0,0 +1,154 @@ +{ ... }: +{ + wayland.windowManager.hyprland.settings = { + binds = { + movefocus_cycles_fullscreen = true; + }; + + bind = [ + # show keybinds list + "$mainMod, F1, exec, show-keybinds" + + # keybindings + "$mainMod, Return, exec, ghostty --gtk-single-instance=true" + "$mainMod, P, pseudo," + "$mainMod, C, killactive," + "$mainMod, M, exit, " + "$mainMod, E, exec, $fileManager" + "$mainMod, V, togglefloating," + "$mainMod, R, exec, $menu " + "$mainMod, J, togglesplit " + # "ALT, Return, exec, [float; size 1111 700] ghostty" + # "$mainMod SHIFT, Return, exec, [fullscreen] ghostty" + # "$mainMod, B, exec, [workspace 1 silent] zen-beta" + # "$mainMod, Q, killactive," + # "$mainMod, F, fullscreen, 0" + # "$mainMod SHIFT, F, fullscreen, 1" + # "$mainMod, Space, exec, toggle-float" + # "$mainMod, D, exec, vicinae vicinae://toggle" + # "$mainMod SHIFT, D, exec, webcord --enable-features=UseOzonePlatform --ozone-platform=wayland" + # "$mainMod SHIFT, S, exec, hyprctl dispatch exec '[workspace 5 silent] SoundWireServer'" + # "$mainMod, Escape, exec, swaylock" + # "ALT, Escape, exec, hyprlock" + # "$mainMod SHIFT, Escape, exec, power-menu" + # "$mainMod, X, togglesplit," + # "$mainMod, T, exec, toggle-oppacity" + # "$mainMod, E, exec, nemo" + # "ALT, E, exec, hyprctl dispatch exec '[float; size 1111 700] nemo'" + # "$mainMod SHIFT, B, exec, toggle-waybar" + # "$mainMod, C ,exec, hyprpicker -a" + # "$mainMod, W,exec, wallpaper-picker" + # "$mainMod SHIFT, W,exec, hyprctl dispatch exec '[float; size 925 615] waypaper'" + # "$mainMod, N, exec, swaync-client -t -sw" + # "CTRL SHIFT, Escape, exec, hyprctl dispatch exec '[workspace 9] missioncenter'" + # "$mainMod, equal, exec, woomer" + # "$mainMod SHIFT, W, exec, vm-start" + + # screenshot + ",Print, exec, screenshot --copy" + "$mainMod, Print, exec, screenshot --save" + "$mainMod SHIFT, Print, exec, screenshot --swappy" + + # switch focus + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + "$mainMod, h, movefocus, l" + "$mainMod, j, movefocus, d" + "$mainMod, k, movefocus, u" + "$mainMod, l, movefocus, r" + + "$mainMod, left, alterzorder, top" + "$mainMod, right, alterzorder, top" + "$mainMod, up, alterzorder, top" + "$mainMod, down, alterzorder, top" + "$mainMod, h, alterzorder, top" + "$mainMod, j, alterzorder, top" + "$mainMod, k, alterzorder, top" + "$mainMod, l, alterzorder, top" + + "CTRL ALT, up, exec, hyprctl dispatch focuswindow floating" + "CTRL ALT, down, exec, hyprctl dispatch focuswindow tiled" + + # switch workspace + "$mainMod, 1, workspace, 1" + "$mainMod, 2, workspace, 2" + "$mainMod, 3, workspace, 3" + "$mainMod, 4, workspace, 4" + "$mainMod, 5, workspace, 5" + "$mainMod, 6, workspace, 6" + "$mainMod, 7, workspace, 7" + "$mainMod, 8, workspace, 8" + "$mainMod, 9, workspace, 9" + "$mainMod, 0, workspace, 10" + + # same as above, but switch to the workspace + "$mainMod SHIFT, 1, movetoworkspacesilent, 1" # movetoworkspacesilent + "$mainMod SHIFT, 2, movetoworkspacesilent, 2" + "$mainMod SHIFT, 3, movetoworkspacesilent, 3" + "$mainMod SHIFT, 4, movetoworkspacesilent, 4" + "$mainMod SHIFT, 5, movetoworkspacesilent, 5" + "$mainMod SHIFT, 6, movetoworkspacesilent, 6" + "$mainMod SHIFT, 7, movetoworkspacesilent, 7" + "$mainMod SHIFT, 8, movetoworkspacesilent, 8" + "$mainMod SHIFT, 9, movetoworkspacesilent, 9" + "$mainMod SHIFT, 0, movetoworkspacesilent, 10" + "$mainMod CTRL, c, movetoworkspace, empty" + + # window control + "$mainMod SHIFT, left, movewindow, l" + "$mainMod SHIFT, right, movewindow, r" + "$mainMod SHIFT, up, movewindow, u" + "$mainMod SHIFT, down, movewindow, d" + "$mainMod SHIFT, h, movewindow, l" + "$mainMod SHIFT, j, movewindow, d" + "$mainMod SHIFT, k, movewindow, u" + "$mainMod SHIFT, l, movewindow, r" + + "$mainMod CTRL, left, resizeactive, -80 0" + "$mainMod CTRL, right, resizeactive, 80 0" + "$mainMod CTRL, up, resizeactive, 0 -80" + "$mainMod CTRL, down, resizeactive, 0 80" + "$mainMod CTRL, h, resizeactive, -80 0" + "$mainMod CTRL, j, resizeactive, 0 80" + "$mainMod CTRL, k, resizeactive, 0 -80" + "$mainMod CTRL, l, resizeactive, 80 0" + + "$mainMod ALT, left, moveactive, -80 0" + "$mainMod ALT, right, moveactive, 80 0" + "$mainMod ALT, up, moveactive, 0 -80" + "$mainMod ALT, down, moveactive, 0 80" + "$mainMod ALT, h, moveactive, -80 0" + "$mainMod ALT, j, moveactive, 0 80" + "$mainMod ALT, k, moveactive, 0 -80" + "$mainMod ALT, l, moveactive, 80 0" + + # media and volume controls + # ",XF86AudioMute,exec, pamixer -t" + ",XF86AudioPlay,exec, playerctl play-pause" + ",XF86AudioNext,exec, playerctl next" + ",XF86AudioPrev,exec, playerctl previous" + ",XF86AudioStop,exec, playerctl stop" + + "$mainMod, mouse_down, workspace, e-1" + "$mainMod, mouse_up, workspace, e+1" + + # clipboard manager + "$mainMod, V, exec, vicinae vicinae://extensions/vicinae/clipboard/history" + ]; + + bindel = [ + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, pctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ]; + + # mouse binding + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + }; +} diff --git a/users/natalie/home/hyprland/default.nix b/users/natalie/home/hyprland/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..dff992714274e09e3de63dff1e1e110e13e95cfb --- /dev/null +++ b/users/natalie/home/hyprland/default.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + imports = [ + ./hyprland.nix + ./exec-once.nix + ./monitors.nix + ./settings.nix + ./binds.nix + # ./windowrules.nix + ./hyprlock.nix + # ./variables.nix + ]; +} diff --git a/users/natalie/home/hyprland/exec-once.nix b/users/natalie/home/hyprland/exec-once.nix new file mode 100644 index 0000000000000000000000000000000000000000..c88d3810e7986256a04dbaff84fc4b2a5a4eb38a --- /dev/null +++ b/users/natalie/home/hyprland/exec-once.nix @@ -0,0 +1,25 @@ +{ ... }: +{ + wayland.windowManager.hyprland.settings.exec-once = [ + # "hash dbus-update-activation-environment 2>/dev/null" + "dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + + "hyprlock" + + # "nm-applet &" + # "poweralertd &" + # "wl-clip-persist --clipboard both &" + # "wl-paste --watch cliphist store &" + # "waybar &" + # "swaync &" + # "vicinae server &" + # "udiskie --automount --notify --smart-tray &" + # "hyprctl setcursor Bibata-Modern-Ice 24 &" + # "init-wallpaper &" + # + # "ghostty --gtk-single-instance=true --quit-after-last-window-closed=false --initial-window=false" + # "[workspace 1 silent] zen-beta" + # "[workspace 2 silent] ghostty" + ]; +} diff --git a/users/natalie/home/hyprland/hyprland.nix b/users/natalie/home/hyprland/hyprland.nix new file mode 100644 index 0000000000000000000000000000000000000000..187b5d529982099ef510ccf8fa614695107a526d --- /dev/null +++ b/users/natalie/home/hyprland/hyprland.nix @@ -0,0 +1,30 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + swww + grimblast + hyprpicker + grim + slurp + wl-clip-persist + cliphist + wf-recorder + glib + wayland + direnv + playerctl + ]; + systemd.user.targets.hyprland-session.Unit.Wants = [ + "xdg-desktop-autostart.target" + ]; + wayland.windowManager.hyprland = { + enable = true; + package = null; + portalPackage = null; + + xwayland = { + enable = true; + }; + systemd.enable = true; + }; +} diff --git a/users/natalie/home/hyprland/hyprlock.nix b/users/natalie/home/hyprland/hyprlock.nix new file mode 100644 index 0000000000000000000000000000000000000000..37cfb0022a8d68a49531555466f6c6cfee2a76e0 --- /dev/null +++ b/users/natalie/home/hyprland/hyprlock.nix @@ -0,0 +1,112 @@ +{ ... }: +{ + programs.hyprlock = { + enable = true; + + settings = { + general = { + hide_cursor = true; + ignore_empty_input = true; + fractional_scaling = 0; + }; + + background = [ + { + color = "rgba(29, 32, 33, 255)"; + blur_passes = 2; + vibrancy_darkness = 0.0; + } + ]; + # + # shape = [ + # # User box + # { + # size = "300, 50"; + # + # rounding = 0; + # border_size = 2; + # color = "rgba(102, 92, 84, 0.33)"; + # border_color = "rgba(168, 153, 132, 0.95)"; + # + # position = "0, ${if host == "laptop" then "120" else "270"}"; + # halign = "center"; + # valign = "bottom"; + # } + # ]; + # + # label = [ + # # Time + # { + # text = ''cmd[update:1000] echo "$(date +'%k:%M')"''; + # + # font_size = 115; + # font_family = "Maple Mono Bold"; + # + # shadow_passes = 3; + # color = "rgba(235, 219, 178, 0.9)"; + # + # position = "0, ${if host == "laptop" then "-25" else "-150"}"; + # halign = "center"; + # valign = "top"; + # } + # # Date + # { + # text = ''cmd[update:1000] echo "- $(date +'%A, %B %d') -" ''; + # + # font_size = 18; + # font_family = "Maple Mono"; + # + # shadow_passes = 3; + # color = "rgba(235, 219, 178, 0.9)"; + # + # position = "0, ${if host == "laptop" then "-225" else "-350"}"; + # halign = "center"; + # valign = "top"; + # } + # # Username + # { + # text = " $USER"; + # + # font_size = 15; + # font_family = "Maple Mono Bold"; + # + # color = "rgba(235, 219, 178, 1)"; + # + # position = "0, ${if host == "laptop" then "134" else "284"}"; + # halign = "center"; + # valign = "bottom"; + # } + # ]; + # + # input-field = [ + # { + # size = "300, 50"; + # rounding = 0; + # outline_thickness = 2; + # + # dots_spacing = 0.4; + # + # font_color = "rgba(235, 219, 178, 0.9)"; + # font_family = "Maple Mono Bold"; + # + # outer_color = "rgba(168, 153, 132, 0.95)"; + # inner_color = "rgba(102, 92, 84, 0.33)"; + # check_color = "rgba(152, 151, 26, 0.95)"; + # fail_color = "rgba(204, 36, 29, 0.95)"; + # capslock_color = "rgba(215, 153, 33, 0.95)"; + # bothlock_color = "rgba(215, 153, 33, 0.95)"; + # + # hide_input = false; + # fade_on_empty = false; + # placeholder_text = ''Enter Password''; + # + # position = "0, ${if host == "laptop" then "50" else "200"}"; + # halign = "center"; + # valign = "bottom"; + # } + # ]; + # + # animation = [ "inputFieldColors, 0" ]; + }; + }; +} diff --git a/users/natalie/home/hyprland/monitors.nix b/users/natalie/home/hyprland/monitors.nix new file mode 100644 index 0000000000000000000000000000000000000000..ae63a8e983bd40164ca183407a4c596d7c8d94cf --- /dev/null +++ b/users/natalie/home/hyprland/monitors.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: +{ + wayland.windowManager.hyprland = { + settings.monitor = [ ",preferred,auto,auto" ]; + + extraConfig = '' + # hyprlang noerror true + source = ~/.config/hypr/monitors.conf + source = ~/.config/hypr/workspaces.conf + # hyprlang noerror false + ''; + }; + + home.packages = with pkgs; [ nwg-displays ]; +} diff --git a/users/natalie/home/hyprland/settings.nix b/users/natalie/home/hyprland/settings.nix new file mode 100644 index 0000000000000000000000000000000000000000..522d975c669889907cc601d3fecabed57cabead6 --- /dev/null +++ b/users/natalie/home/hyprland/settings.nix @@ -0,0 +1,120 @@ +{ ... }: +{ + wayland.windowManager.hyprland.settings = { + # see: https://wiki.hypr.land/Configuring/Variables/#input + input = { + kb_layout = "us"; + repeat_delay = 300; + follow_mouse = 1; + }; + # https://wiki.hypr.land/Configuring/Variables/#general + general = { + "$mainMod" = "SUPER"; + layout = "dwindle"; + no_border_on_floating = false; + + }; + # https://wiki.hypr.land/Configuring/Variables/#misc + misc = { + disable_hyprland_logo = true; + always_follow_on_dnd = true; + layers_hog_keyboard_focus = true; + animate_manual_resizes = false; + enable_swallow = true; + swallow_regex = "^(ghostty)$"; + focus_on_activate = true; + new_window_takes_over_fullscreen = 2; + middle_click_paste = false; + }; + + # https://wiki.hypr.land/Configuring/Dwindle-Layout/ + dwindle = { + psuedotile = false; + force_split = 2; + preserve_split = true; + }; + # https://wiki.hypr.land/Configuring/Variables/#decoration + decoration = { + rounding = 0; + rounding_power = 2.0; + active_opacity = 1.0; + inactive_opacity = 1.0; + fullscreen_opacity = 1.0; + dim_modal = true; + dim_inactive = false; + dim_strength = 0.5; + dim_special = 0.2; + dim_around = 0.4; + screen_shader = ""; + border_part_of_window = true; + blur = { + enabled = true; + size = 8; + passes = 1; + brightness = 0.8172; + contrast = 0.8916; + ignore_opacity = true; + noise = 0.0117; + new_optimizations = true; + xray = true; + vibrancy = 0.1696; + vibrancy_darkness = 0.0; + special = false; + popups = false; + popups_ignorealpha = 0.2; + input_methods = false; + input_methods_ignorealpha = 0.2; + }; + + shadow = { + enabled = true; + range = 4; + render_power = 3; + sharp = false; + ignore_window = true; + color = "0xee1a1a1a"; + offset = "0 2"; + scale = 1.0; + }; + + }; + # https://wiki.hypr.land/Configuring/Animations/ + animations = { + enabled = true; + + bezier = [ + "easeOutQuint, 0.23, 1, 0.32, 1" + "easeInOutCubic, 0.65, 0.05, 0.36, 1" + "linear, 0, 0, 1, 1" + "almostLinear, 0.5, 0.5, 0.75, 1" + "quick, 0.15, 0, 0.1, 1" + ]; + + animation = [ + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + "windows, 1, 4.79, easeOutQuint" + "windowsIn, 1, 4.1, easeOutQuint, popin 87%" + "windowsOut, 1, 1.49, linear, popin 87%" + "fadeIn, 1, 1.73, almostLinear" + "fadeOut, 1, 1.46, almostLinear" + "fade, 1, 3.03, quick" + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" + "workspacesOut, 1, 1.94, almostLinear, fade" + "zoomFactor, 1, 7, quick" + ]; + + }; + # https://wiki.hypr.land/Configuring/XWayland/ + xwayland = { + force_zero_scaling = true; + }; + }; + +} diff --git a/users/natalie/home/hyprland/variables.nix b/users/natalie/home/hyprland/variables.nix new file mode 100644 index 0000000000000000000000000000000000000000..cbaff3f40e3bdb4e7ee46ccdcaf2eef8ede5962e --- /dev/null +++ b/users/natalie/home/hyprland/variables.nix @@ -0,0 +1,29 @@ +{ ... }: +{ + home.sessionVariables = { + NIXOS_OZONE_WL = 1; + __GL_GSYNC_ALLOWED = 0; + __GL_VRR_ALLOWED = 0; + # SSH_AUTH_SOCK = "/run/user/1000/ssh-agent"; + DISABLE_QT5_COMPAT = 0; + GDK_BACKEND = "wayland"; + # ANKI_WAYLAND = 1; + WLR_DRM_NO_ATOMIC = 1; + # QT_AUTO_SCREEN_SCALE_FACTOR = 1; + # QT_WAYLAND_DISABLE_WINDOWDECORATION = 1; + QT_QPA_PLATFORM = "wayland"; + QT_QPA_PLATFORMTHEME = "qt5ct"; + # QT_STYLE_OVERRIDE = "kvantum"; + MOZ_ENABLE_WAYLAND = 1; + WLR_BACKEND = "vulkan"; + WLR_RENDERER = "vulkan"; + WLR_NO_HARDWARE_CURSORS = 1; + XDG_CURRENT_DESKTOP = "Hyprland"; + XDG_SESSION_TYPE = "wayland"; + XDG_SESSION_DESKTOP = "Hyprland"; + SDL_VIDEODRIVER = "wayland"; + CLUTTER_BACKEND = "wayland"; + # GTK_THEME = "Colloid-Green-Dark-Gruvbox"; + # GRIMBLAST_HIDE_CURSOR = 0; + }; +} diff --git a/users/natalie/home/hyprland/windowrules.nix b/users/natalie/home/hyprland/windowrules.nix new file mode 100644 index 0000000000000000000000000000000000000000..22328145104b35b901688c0ef7483b3f0324b7c5 --- /dev/null +++ b/users/natalie/home/hyprland/windowrules.nix @@ -0,0 +1,91 @@ +{ ... }: +{ + wayland.windowManager.hyprland.settings = { + # https://wiki.hypr.land/Configuring/Window-Rules/#layer-rules + windowrule = [ + "float,class:^(mpv)$" + "pin,class:^(rofi)$" + "pin,class:^(waypaper)$" + "float,title:^(Volume Control)$" + + # "float,title:^(Firefox — Sharing Indicator)$" + # "move 0 0,title:^(Firefox — Sharing Indicator)$" + # "size 700 450,title:^(Volume Control)$" + # "move 40 55%,title:^(Volume Control)$" + #"float, title:^(Picture-in-Picture)$" + # "opacity 1.0 override 1.0 override, title:^(Picture-in-Picture)$" + # "pin, title:^(Picture-in-Picture)$" + # "opacity 1.0 override 1.0 override, title:^(.*imv.*)$" + # "opacity 1.0 override 1.0 override, title:^(.*mpv.*)$" + # "opacity 1.0 override 1.0 override, class:(Aseprite)" + # "opacity 1.0 override 1.0 override, class:(Unity)" + # "opacity 1.0 override 1.0 override, class:(zen)" + # "opacity 1.0 override 1.0 override, class:(evince)" + # "workspace 1, class:^(zen-beta)$" + # "workspace 3, class:^(evince)$" + # "workspace 4, class:^(Gimp-2.10)$" + # "workspace 4, class:^(Aseprite)$" + # "workspace 5, class:^(Audacious)$" + # "workspace 5, class:^(Spotify)$" + # "workspace 8, class:^(com.obsproject.Studio)$" + # "workspace 10, class:^(discord)$" + # "workspace 10, class:^(WebCord)$" + # "idleinhibit focus, class:^(mpv)$" + # "idleinhibit fullscreen, class:^(firefox)$" + # "float,class:^(org.gnome.Calculator)$" + # "float,class:^(waypaper)$" + # "float,class:^(zenity)$" + # "size 850 500,class:^(zenity)$" + # "size 725 330,class:^(SoundWireServer)$" + # "float,class:^(org.gnome.FileRoller)$" + # "float,class:^(org.pulseaudio.pavucontrol)$" + # "float,class:^(SoundWireServer)$" + # "float,class:^(.sameboy-wrapped)$" + # "float,class:^(file_progress)$" + # "float,class:^(confirm)$" + # "float,class:^(dialog)$" + # "float,class:^(download)$" + # "float,class:^(notification)$" + # "float,class:^(error)$" + # "float,class:^(confirmreset)$" + # "float,title:^(Open File)$" + # "float,title:^(File Upload)$" + # "float,title:^(branchdialog)$" + # "float,title:^(Confirm to replace files)$" + # "float,title:^(File Operation Progress)$" + # + # "opacity 0.0 override,class:^(xwaylandvideobridge)$" + # "noanim,class:^(xwaylandvideobridge)$" + # "noinitialfocus,class:^(xwaylandvideobridge)$" + # "maxsize 1 1,class:^(xwaylandvideobridge)$" + # "noblur,class:^(xwaylandvideobridge)$" + # + # # No gaps when only + # "bordersize 0, floating:0, onworkspace:w[t1]" + # "rounding 0, floating:0, onworkspace:w[t1]" + # "bordersize 0, floating:0, onworkspace:w[tg1]" + # "rounding 0, floating:0, onworkspace:w[tg1]" + # "bordersize 0, floating:0, onworkspace:f[1]" + # "rounding 0, floating:0, onworkspace:f[1]" + # Remove context menu transparency in chromium based apps + # "opaque,class:^()$,title:^()$" + # "noshadow,class:^()$,title:^()$" + # "noblur,class:^()$,title:^()$" + ]; + + # https://wiki.hypr.land/Configuring/Window-Rules/#layer-rules + layerrule = [ + "dimaround, vicinae" + "dimaround, rofi" + "dimaround, swaync-control-center" + ]; + + # https://wiki.hypr.land/Configuring/Workspace-Rules/ + # No gaps when only + workspace = [ + "w[t1], gapsout:0, gapsin:0" + "w[tg1], gapsout:0, gapsin:0" + "f[1], gapsout:0, gapsin:0" + ]; + }; +} -- 2.54.0 From 6de9e49437f2c89c38b030745d219434e96abb75 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Wed, 29 Oct 2025 22:07:27 -0700 Subject: [PATCH 08/27] feat: add vicinae --- flake.lock | 91 ++++++++++++++++++--- flake.nix | 2 + lib/mkSystem.nix | 1 + modules/shared/nix.nix | 4 + users/natalie/home/default.nix | 1 + users/natalie/home/hyprland/binds.nix | 2 +- users/natalie/home/hyprland/exec-once.nix | 15 ++-- users/natalie/home/hyprland/windowrules.nix | 8 +- users/natalie/home/vicinae.nix | 20 +++++ 9 files changed, 121 insertions(+), 23 deletions(-) create mode 100644 users/natalie/home/vicinae.nix diff --git a/flake.lock b/flake.lock index 2c51d073249b25838cc12d7d22fb7ce8b43a6bda..6f0b0c1207ee63b90048debfd3fe72682aec5209 100644 --- a/flake.lock +++ b/flake.lock @@ -203,11 +203,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -220,6 +220,24 @@ "inputs": { "systems": "systems_5" }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_6" + }, "locked": { "lastModified": 1710146030, "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", @@ -234,9 +252,9 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_6": { "inputs": { - "systems": "systems_6" + "systems": "systems_7" }, "locked": { "lastModified": 1705309234, @@ -429,6 +447,22 @@ } }, "nixpkgs_3": { + "locked": { + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1708161998, "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=", @@ -444,7 +478,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1717696253, "narHash": "sha256-1+ua0ggXlYYPLTmMl3YeYYsBXDSCqT+Gw3u6l4gvMhA=", @@ -509,6 +543,7 @@ "nixpkgs": "nixpkgs_2", "nvf": "nvf", "rust-overlay": "rust-overlay", + "vicinae": "vicinae", "zen-browser": "zen-browser", "zig": "zig", "zls": "zls" @@ -708,6 +743,40 @@ "type": "github" } }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "vicinae": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1761759538, + "narHash": "sha256-HUN2lrtbOX1MMCVzl3yBsMDyyoXqvQS7QFs9gJWUyaw=", + "owner": "vicinaehq", + "repo": "vicinae", + "rev": "278206de88db4d336b2759582b842453bf4b3f2d", + "type": "github" + }, + "original": { + "owner": "vicinaehq", + "repo": "vicinae", + "type": "github" + } + }, "zen-browser": { "inputs": { "nixpkgs": [ @@ -731,8 +800,8 @@ "zig": { "inputs": { "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_3" + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1760747435, @@ -751,7 +820,7 @@ "zig-overlay": { "inputs": { "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_6", "nixpkgs": [ "zls", "nixpkgs" @@ -773,10 +842,10 @@ }, "zls": { "inputs": { - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_5", "gitignore": "gitignore_2", "langref": "langref", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "zig-overlay": "zig-overlay" }, "locked": { diff --git a/flake.nix b/flake.nix index 0d0144ab2ff35d0cb23500583c081d5ac9b5e065..43587f441ffffc7d3db2f4fb72f91955104b0b87 100644 --- a/flake.nix +++ b/flake.nix @@ -24,6 +24,8 @@ moonlight.url = "github:moonlight-mod/moonlight"; # Add `/develop` to the flake URL to use nightly. moonlight.inputs.nixpkgs.follows = "nixpkgs"; + vicinae.url = "github:vicinaehq/vicinae"; + zen-browser = { url = "github:youwen5/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/lib/mkSystem.nix b/lib/mkSystem.nix index 9e3a13c459d7382e0c7d888d249f7ccb23a00fff..e8f6a0ce18544893f6ecffe87e6e86b065885c44 100644 --- a/lib/mkSystem.nix +++ b/lib/mkSystem.nix @@ -76,6 +76,7 @@ let ) inputs.nvf.homeManagerModules.default inputs.android-nixpkgs.hmModule + inputs.vicinae.homeManagerModules.default ]; in systemFunc { diff --git a/modules/shared/nix.nix b/modules/shared/nix.nix index 7997bf0f9cf8b0613f98f2a09d69e8929a9fe821..d07ba84632ced91604678563ceaaa68c313fdc20 100644 --- a/modules/shared/nix.nix +++ b/modules/shared/nix.nix @@ -28,11 +28,15 @@ "https://nix-community.cachix.org" # For haskell "https://cache.iog.io" + #vicinae + "https://vicinae.cachix.org" ]; trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" # For haskell "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" + #vicinae + "vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc=" ]; }; gc = { diff --git a/users/natalie/home/default.nix b/users/natalie/home/default.nix index 1a3bf2f38624b363453063a9e2681e1e6bbfa469..6a15901141e20096e6bf7e28deb7302f8b67db82 100644 --- a/users/natalie/home/default.nix +++ b/users/natalie/home/default.nix @@ -3,5 +3,6 @@ imports = [ ./tmux.nix ./hyprland + ./vicinae.nix ]; } diff --git a/users/natalie/home/hyprland/binds.nix b/users/natalie/home/hyprland/binds.nix index edac51ecfc9fda34b1fa911b91ccc507959080ab..4c30cd70b41e1c56fe6c83944caf49f85e6e60f9 100644 --- a/users/natalie/home/hyprland/binds.nix +++ b/users/natalie/home/hyprland/binds.nix @@ -18,6 +18,7 @@ "$mainMod, V, togglefloating," "$mainMod, R, exec, $menu " "$mainMod, J, togglesplit " + "$mainMod, Space, exec, vicinae vicinae://toggle" # "ALT, Return, exec, [float; size 1111 700] ghostty" # "$mainMod SHIFT, Return, exec, [fullscreen] ghostty" # "$mainMod, B, exec, [workspace 1 silent] zen-beta" @@ -25,7 +26,6 @@ # "$mainMod, F, fullscreen, 0" # "$mainMod SHIFT, F, fullscreen, 1" # "$mainMod, Space, exec, toggle-float" - # "$mainMod, D, exec, vicinae vicinae://toggle" # "$mainMod SHIFT, D, exec, webcord --enable-features=UseOzonePlatform --ozone-platform=wayland" # "$mainMod SHIFT, S, exec, hyprctl dispatch exec '[workspace 5 silent] SoundWireServer'" # "$mainMod, Escape, exec, swaylock" diff --git a/users/natalie/home/hyprland/exec-once.nix b/users/natalie/home/hyprland/exec-once.nix index c88d3810e7986256a04dbaff84fc4b2a5a4eb38a..e856db13f4c15671e247034901c91fac60ffa6a1 100644 --- a/users/natalie/home/hyprland/exec-once.nix +++ b/users/natalie/home/hyprland/exec-once.nix @@ -7,14 +7,13 @@ "hyprlock" - # "nm-applet &" - # "poweralertd &" - # "wl-clip-persist --clipboard both &" - # "wl-paste --watch cliphist store &" - # "waybar &" - # "swaync &" - # "vicinae server &" - # "udiskie --automount --notify --smart-tray &" + "nm-applet &" + "wl-clip-persist --clipboard both &" + "wl-paste --watch cliphist store &" + "waybar &" + "swaync &" + "vicinae server &" + "udiskie --automount --notify --smart-tray &" # "hyprctl setcursor Bibata-Modern-Ice 24 &" # "init-wallpaper &" # diff --git a/users/natalie/home/hyprland/windowrules.nix b/users/natalie/home/hyprland/windowrules.nix index 22328145104b35b901688c0ef7483b3f0324b7c5..e4d0cc88f5857cb7f72017a82433b098967ff079 100644 --- a/users/natalie/home/hyprland/windowrules.nix +++ b/users/natalie/home/hyprland/windowrules.nix @@ -75,9 +75,11 @@ # https://wiki.hypr.land/Configuring/Window-Rules/#layer-rules layerrule = [ - "dimaround, vicinae" - "dimaround, rofi" - "dimaround, swaync-control-center" + "blur, vicinae" + "ignorealpha 0, vicinae" + "noanim, vicinae" + # "dimaround, rofi" + # "dimaround, swaync-control-center" ]; # https://wiki.hypr.land/Configuring/Workspace-Rules/ diff --git a/users/natalie/home/vicinae.nix b/users/natalie/home/vicinae.nix new file mode 100644 index 0000000000000000000000000000000000000000..9e2068a3bb2852a77cc5c92b80e55c2f8e8b560e --- /dev/null +++ b/users/natalie/home/vicinae.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: +{ + services.vicinae = { + enable = true; + autoStart = false; + settings = { + faviconService = "twenty"; # twenty | google | none + font.size = 11; + popToRootOnClose = false; + rootSearch.searchFiles = true; + theme.name = "catpuccin-mocha"; + window = { + csd = true; + opacity = 0.95; + rounding = 10; + }; + + }; + }; +} -- 2.54.0 From bb048af6c8e225b1e93c74d2a5a350aa9de768e6 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Wed, 29 Oct 2025 22:23:15 -0700 Subject: [PATCH 09/27] feat: add swaync --- users/natalie/desktop/configuration.nix | 6 +- users/natalie/home/default.nix | 1 + users/natalie/home/swaync.nix | 595 ++++++++++++++++++++++++ 3 files changed, 597 insertions(+), 5 deletions(-) create mode 100644 users/natalie/home/swaync.nix diff --git a/users/natalie/desktop/configuration.nix b/users/natalie/desktop/configuration.nix index 4c02281c5ba27e7b623f71cf2f8f5ab421d20102..56bb397fbcb1dfbd91e223216b0940d6a8d8bdc4 100644 --- a/users/natalie/desktop/configuration.nix +++ b/users/natalie/desktop/configuration.nix @@ -11,6 +11,7 @@ ]; documentation.man.generateCaches = false; programs = { + hyprland.enable = true; gamemode.enable = true; _1password.enable = true; @@ -145,11 +146,6 @@ # Enable sound with pipewire. security.rtkit.enable = true; - services = { - desktopManager.cosmic.enable = true; - displayManager.cosmic-greeter.enable = true; - desktopManager.cosmic.xwayland.enable = true; - }; # Enable touchpad support (enabled default in most desktopManager). # services.xserver.libinput.enable = true; diff --git a/users/natalie/home/default.nix b/users/natalie/home/default.nix index 6a15901141e20096e6bf7e28deb7302f8b67db82..17c17e9dfdb47331f6757fe5fb789e94c25caefa 100644 --- a/users/natalie/home/default.nix +++ b/users/natalie/home/default.nix @@ -4,5 +4,6 @@ ./tmux.nix ./hyprland ./vicinae.nix + ./swaync.nix ]; } diff --git a/users/natalie/home/swaync.nix b/users/natalie/home/swaync.nix new file mode 100644 index 0000000000000000000000000000000000000000..2768a4dc9012f80f4256f54f60dbd86ac03fc094 --- /dev/null +++ b/users/natalie/home/swaync.nix @@ -0,0 +1,595 @@ +{ pkgs, ... }: +{ + services.swaync = { + enable = true; + settings = { + ignore-gtk-theme = true; + positionX = "right"; + positionY = "top"; + layer = "overlay"; + control-center-layer = "top"; + layer-shell = true; + layer-shell-cover-screen = true; + cssPriority = "user"; + control-center-margin-top = 15; + control-center-margin-bottom = 15; + control-center-margin-right = 15; + control-center-margin-left = 0; + notification-2fa-action = true; + notification-inline-replies = false; + notification-body-image-height = 100; + notification-body-image-width = 200; + notification-icon-size = 48; + timeout = 8; + timeout-low = 6; + timeout-critical = 0; + fit-to-screen = true; + relative-timestamps = true; + control-center-width = 400; + control-center-height = 600; + notification-window-width = 350; + keyboard-shortcuts = true; + notification-grouping = true; + image-visibility = "when-available"; + transition-time = 200; + hide-on-clear = false; + hide-on-action = true; + text-empty = "No Notifications"; + script-fail-notify = true; + widgets = [ + "dnd" + "mpris" + "notifications" + "volume" + "backlight" + ]; + widget-config = { + inhibitors = { + text = "Inhibitors"; + button-text = "Clear All"; + clear-all-button = true; + }; + title = { + text = "Notifications"; + clear-all-button = true; + button-text = "Clear All"; + }; + dnd = { + text = "Do Not Disturb"; + }; + label = { + max-lines = 5; + text = "Label Text"; + }; + mpris = { + show-album-art = "always"; + loop-carousel = false; + }; + volume = { + label = "󰕾 "; + expand-button-label = ""; + collapse-button-label = ""; + show-per-app = true; + show-per-app-icon = true; + show-per-app-label = false; + }; + backlight = { + label = "󰃟 "; + }; + }; + }; + style = '' + :root { + --bg-primary: #1d2021; + --bg-secondary: #282828; + --bg-button: #4E4E4E; + --bg-button-hover: #5E5E5E; + --text-primary: #EBDBB2; + --text-disabled: #5C554A; + --border-color: #928374; + --priority-low: #EBDBB2; + --priority-normal: #83A598; + --priority-critical: #FB4934; + --transition-standard: 0.15s ease-in-out; + } + + /* Base styles */ + * { + outline: none; + } + + *:focus { + outline: none; + box-shadow: none; + } + + /* Scrollbar */ + scrollbar, + scrollbar slider { + opacity: 0; + min-width: 0px; + min-height: 0px; + background: transparent; + } + + /* Common button styles */ + .close-button, + .widget-title>button, + .widget-dnd switch, + .widget-menubar>.menu-button-bar>.widget-menubar-container button, + .widget-menubar>revealer button, + .widget-inhibitors>button { + border-radius: 0px; + border: none; + box-shadow: none; + transition: background var(--transition-standard); + } + + /* Close button */ + .close-button { + background: var(--bg-button); + color: var(--text-primary); + text-shadow: none; + padding: 0; + border-radius: 50%; + margin-top: 8px; + margin-right: 8px; + min-width: 20px; + min-height: 20px; + } + + .close-button:hover { + background: var(--bg-button-hover); + } + + /* Notification rows */ + .notification-row { + background: none; + } + + .notification-row:focus, + .notification-group:focus { + background: var(--bg-primary); + } + + .notification-row .notification-background { + margin: 0px 0px 0px 0px; + } + + /* Base notification styles */ + .notification-row .notification-background .notification { + border-radius: 0px; + border: 1px solid var(--border-color); + transition: background var(--transition-standard); + background: var(--bg-primary); + padding: 2px 4px; + } + + /* Priority-based notification styles */ + .notification-row .notification-background .notification.low { + border-left: 3px solid var(--priority-low); + } + + .notification-row .notification-background .notification.normal { + border-left: 3px solid var(--priority-normal); + } + + .notification-row .notification-background .notification.critical { + border-left: 3px solid var(--priority-critical); + } + + /* Notification default action */ + .notification-default-action { + padding: 4px; + margin: 0; + box-shadow: none; + background: transparent; + border: none; + color: var(--text-primary); + transition: background var(--transition-standard); + border-radius: 0px; + } + + .notification-default-action:hover { + -gtk-icon-filter: none; + background: var(--bg-primary); + } + + .notification-default-action:not(:only-child) { + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + } + + /* Notification content */ + .notification-content { + background: transparent; + border-radius: 0px; + padding: 0; + } + + .notification-content .image { + -gtk-icon-filter: none; + -gtk-icon-size: 30px; + border-radius: 50px; + margin: 0px 7px 0px 0px; + } + + .notification-content .app-icon { + -gtk-icon-filter: none; + -gtk-icon-size: calc(25px / 3); + -gtk-icon-shadow: 0 1px 4px black; + margin: 6px; + } + + .notification-content .text-box label { + filter: none; + } + + /* Text elements */ + .notification-content .text-box .summary, + .notification-content .text-box .time, + .notification-content .text-box .body { + font-size: 16px; + background: transparent; + color: var(--text-primary); + text-shadow: none; + } + + .notification-content .text-box .summary, + .notification-content .text-box .time { + font-weight: bold; + } + + .notification-content .text-box .time { + margin-right: 30px; + } + + .notification-content .text-box .body { + font-weight: normal; + } + + /* Progress and images */ + .notification-content progressbar { + margin-top: 4px; + } + + .notification-content .body-image { + margin-top: 4px; + background-color: white; + -gtk-icon-filter: none; + } + + /* Inline reply */ + .notification-content .inline-reply { + margin-top: 4px; + } + + .notification-content .inline-reply .inline-reply-entry { + background: var(--bg-secondary); + color: var(--text-primary); + caret-color: var(--text-primary); + border: 1px solid var(--border-color); + border-radius: 0px; + } + + .notification-content .inline-reply .inline-reply-button { + margin-left: 4px; + background: rgb(48, 48, 48); + border: 1px solid var(--border-color); + border-radius: 0px; + color: var(--text-primary); + } + + .notification-content .inline-reply .inline-reply-button:disabled { + background: initial; + color: rgb(150, 150, 150); + border: 1px solid var(--border-color); + border-color: transparent; + } + + .notification-content .inline-reply .inline-reply-button:hover { + background: var(--bg-primary); + } + + /* Alternative actions */ + .notification-alt-actions { + background: none; + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; + padding: 4px; + } + + .notification-action { + margin: 4px; + padding: 0; + font-size: 16px; + } + + .notification-action>button { + border-radius: 0px; + font-size: 16px; + padding: 1px; + } + + /* Notification groups */ + .notification-group { + transition: opacity 200ms ease-in-out; + } + + .notification-group .notification-group-close-button .close-button { + margin: 12px 20px; + } + + .notification-group .notification-group-buttons, + .notification-group .notification-group-headers { + margin: 0 16px; + color: var(--text-primary); + } + + .notification-group .notification-group-headers { + font-size: 16px; + } + + .notification-group .notification-group-headers .notification-group-icon { + color: var(--text-primary); + -gtk-icon-size: 20px; + font-size: 16px; + font-weight: 700; + margin: 5px 5px 5px 0px; + } + + .notification-group .notification-group-headers .notification-group-header { + font-size: 16px; + font-weight: 700; + color: var(--text-primary); + } + + .notification-group .notification-group-buttons { + margin: 5px; + } + + .notification-group.collapsed.not-expanded { + opacity: 1.0; + } + + .notification-group.collapsed .notification-row .notification { + background-color: var(--bg-primary); + } + + .notification-group.collapsed .notification-row:not(:last-child) .notification-action, + .notification-group.collapsed .notification-row:not(:last-child) .notification-default-action { + opacity: 1.0; + } + + .notification-group.collapsed:hover .notification-row:not(:only-child) .notification { + background-color: var(--bg-primary); + } + + /* Control center */ + .control-center { + background: var(--bg-primary); + color: var(--text-primary); + border-radius: 0px; + border: 2px solid var(--border-color); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5); + } + + .control-center .control-center-list-placeholder { + opacity: 1.0; + } + + .control-center .control-center-list { + background: transparent; + } + + .control-center .control-center-list .notification .notification-default-action, + .control-center .control-center-list .notification .notification-action { + transition: opacity 400ms ease-in-out, background var(--transition-standard); + } + + .control-center .control-center-list .notification .notification-default-action:hover, + .control-center .control-center-list .notification .notification-action:hover { + background-color: var(--bg-primary); + } + + /* Floating notifications */ + .blank-window, + .floating-notifications { + background: transparent; + } + + .floating-notifications .notification { + box-shadow: none; + } + + /* Widgets */ + .widget-title>label { + margin: 8px; + font-weight: 700; + font-size: 16px; + } + + .widget-title>button { + margin: 8px; + font-size: 16px; + background: var(--bg-primary); + border: 2px solid var(--text-disabled); + padding: 3px 10px; + color: var(--text-primary); + font-weight: 700; + } + + /* Common widget styles */ + .widget-dnd, + .widget-label, + .widget-volume, + .widget-slider, + .widget-backlight { + margin-left: 8px; + margin-right: 8px; + margin-top: 0px; + margin-bottom: 0px; + } + + .widget-dnd label, + .widget-label>label { + color: var(--text-primary); + font-size: 18px; + } + + .widget-dnd label { + margin: 8px; + margin-top: 16px; + } + + .widget-dnd switch { + margin: 8px; + margin-top: 16px; + } + + .widget-dnd switch slider { + border-radius: 0px; + } + + .widget-label { + margin: 8px; + } + + /* Mpris widget */ + .widget-mpris { + margin: 5px; + } + + .widget-mpris .widget-mpris-player { + margin: 10px 10px; + border-radius: 0px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); + border: 1px solid var(--border-color); + } + + .widget-mpris .widget-mpris-player .mpris-background { + filter: blur(2px); + } + + .widget-mpris .widget-mpris-player .mpris-overlay { + padding: 16px; + background-color: rgba(0, 0, 0, 0.55); + } + + .widget-mpris .widget-mpris-player .mpris-overlay button:hover { + background: var(--bg-primary); + } + + .widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art { + border-radius: 0px; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75); + -gtk-icon-size: 50px; + } + + .widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-title { + font-weight: bold; + font-size: 16px; + } + + .widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-subtitle { + font-size: 16px; + } + + .widget-mpris .widget-mpris-player .mpris-overlay>box>button { + margin: 2px; + color: var(--text-primary); + } + + .widget-mpris .widget-mpris-player .mpris-overlay>box>button:hover { + background-color: rgba(0, 0, 0, 0.5); + } + + .widget-mpris>box>button { + color: var(--text-primary); + } + + .widget-mpris>box>button:disabled { + color: var(--text-disabled); + } + + /* Buttons widget */ + .widget-buttons-grid { + padding: 8px; + margin: 8px; + border-radius: 0px; + } + + .widget-buttons-grid flowboxchild>button { + border-radius: 0px; + } + + /* Menubar widget */ + .widget-menubar>.menu-button-bar>.start { + margin-left: 8px; + } + + .widget-menubar>.menu-button-bar>.end { + margin-right: 8px; + } + + .widget-menubar>.menu-button-bar>.widget-menubar-container button { + margin: 0 4px; + } + + .widget-menubar>revealer { + margin-top: 8px; + } + + .widget-menubar>revealer button { + margin: 8px; + margin-top: 0; + } + + /* Volume widget */ + .widget-volume { + padding: 8px; + margin-bottom: 8px; + border-radius: 0px; + } + + .widget-volume row image { + -gtk-icon-size: 24px; + } + + .per-app-volume { + background-color: var(--bg-secondary); + padding: 8px 8px 8px 8px; + margin: 8px 8px 8px 8px; + border-radius: 0px; + } + + /* Slider widget */ + .widget-slider { + padding: 8px; + border-radius: 0px; + } + + .widget-slider label { + font-size: inherit; + } + + /* Backlight widget */ + .widget-backlight { + padding: 8px; + border-radius: 0px; + margin-top: -8px; + margin-bottom: 8px; + } + + /* Inhibitors widget */ + .widget-inhibitors>label { + margin: 8px; + font-size: 16px; + } + + .widget-inhibitors>button { + margin: 8px; + } + ''; + }; +} -- 2.54.0 From d20ae6a725699dabbad9210d4f9dcd22858476eb Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 10:38:51 -0700 Subject: [PATCH 10/27] initial waybar setup --- users/natalie/home/hyprland/exec-once.nix | 18 +++++++++--------- users/natalie/home/hyprland/hyprland.nix | 1 + users/natalie/home/waybar/default.nix | 8 ++++++++ users/natalie/home/waybar/settings.nix | 6 ++++++ users/natalie/home/waybar/style.nix | 1 + users/natalie/home/waybar/waybar.nix | 6 ++++++ 6 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 users/natalie/home/waybar/default.nix create mode 100644 users/natalie/home/waybar/settings.nix create mode 100644 users/natalie/home/waybar/style.nix create mode 100644 users/natalie/home/waybar/waybar.nix diff --git a/users/natalie/home/hyprland/exec-once.nix b/users/natalie/home/hyprland/exec-once.nix index e856db13f4c15671e247034901c91fac60ffa6a1..1bb6afc6d4a83b841cf389e8277e6b9d71d6c62a 100644 --- a/users/natalie/home/hyprland/exec-once.nix +++ b/users/natalie/home/hyprland/exec-once.nix @@ -1,19 +1,19 @@ -{ ... }: +{ pkgs, ... }: { wayland.windowManager.hyprland.settings.exec-once = [ # "hash dbus-update-activation-environment 2>/dev/null" "dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" - "hyprlock" + "${pkgs.hyprlock}/bin/hyprlock" - "nm-applet &" - "wl-clip-persist --clipboard both &" - "wl-paste --watch cliphist store &" - "waybar &" - "swaync &" - "vicinae server &" - "udiskie --automount --notify --smart-tray &" + "${pkgs.network-manager-applet}/bin/nm-applet &" + "${pkgs.wl-clip-persist}/bin/wl-clip-persist --clipboard both &" + "${pkgs.wl-clipboard}/bin/wl-paste --watch cliphist store &" + "${pkgs.waybar}/bin/waybar &" + "${pkgs.swaync}/bin/swaync &" + "${pkgs.vicinae}/bin/vicinae server &" + "${pkgs.udiskie}/bin/udiskie --automount --notify --smart-tray &" # "hyprctl setcursor Bibata-Modern-Ice 24 &" # "init-wallpaper &" # diff --git a/users/natalie/home/hyprland/hyprland.nix b/users/natalie/home/hyprland/hyprland.nix index 187b5d529982099ef510ccf8fa614695107a526d..909b2938dd1939ef6556352e1a6e00ffbca520f3 100644 --- a/users/natalie/home/hyprland/hyprland.nix +++ b/users/natalie/home/hyprland/hyprland.nix @@ -7,6 +7,7 @@ grim slurp wl-clip-persist + wl-clipboard cliphist wf-recorder glib diff --git a/users/natalie/home/waybar/default.nix b/users/natalie/home/waybar/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..702d5206fbab8ae339def456ae5da8f17a4a7ae4 --- /dev/null +++ b/users/natalie/home/waybar/default.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + imports = [ + ./waybar.nix + ./settings.nix + ./style.nix + ]; +} diff --git a/users/natalie/home/waybar/settings.nix b/users/natalie/home/waybar/settings.nix new file mode 100644 index 0000000000000000000000000000000000000000..a9f2b5cf15d257a223c6a56b3da08e09f0e3f1fa --- /dev/null +++ b/users/natalie/home/waybar/settings.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + programs.waybar.settings.mainBar = { + + }; +} diff --git a/users/natalie/home/waybar/style.nix b/users/natalie/home/waybar/style.nix new file mode 100644 index 0000000000000000000000000000000000000000..c915eb0a89e3fb7d83b43c240933f4d5c4558ffe --- /dev/null +++ b/users/natalie/home/waybar/style.nix @@ -0,0 +1 @@ +{ ... }: { } diff --git a/users/natalie/home/waybar/waybar.nix b/users/natalie/home/waybar/waybar.nix new file mode 100644 index 0000000000000000000000000000000000000000..bd925edcbe22647ff5cf3c9408952311bf628016 --- /dev/null +++ b/users/natalie/home/waybar/waybar.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + programs.waybar = { + enable = true; + }; +} -- 2.54.0 From 0f16a3cc334558080f80e0e02e562e45309e59d3 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 10:54:52 -0700 Subject: [PATCH 11/27] feat:waybar config --- users/natalie/home/waybar/settings.nix | 174 ++++++++++++++++++++++++- users/natalie/home/waybar/style.nix | 108 ++++++++++++++- 2 files changed, 279 insertions(+), 3 deletions(-) diff --git a/users/natalie/home/waybar/settings.nix b/users/natalie/home/waybar/settings.nix index a9f2b5cf15d257a223c6a56b3da08e09f0e3f1fa..373f9a97969e1f0bc46c52fd2c16ee5e72748a42 100644 --- a/users/natalie/home/waybar/settings.nix +++ b/users/natalie/home/waybar/settings.nix @@ -1,6 +1,176 @@ { ... }: +let + custom = { + font = "Maple Mono"; + font_size = "18px"; + font_weight = "bold"; + text_color = "#FBF1C7"; + background_0 = "#1D2021"; + background_1 = "#282828"; + border_color = "#928374"; + red = "#CC241D"; + green = "#98971A"; + yellow = "#FABD2F"; + blue = "#458588"; + magenta = "#B16286"; + cyan = "#689D6A"; + orange = "#D65D0E"; + opacity = "1"; + indicator_height = "2px"; + }; +in { - programs.waybar.settings.mainBar = { + programs.waybar.settings.mainBar = with custom; { + position = "top"; + height = 28; + margin-top = 0; + margin-bottom = 0; + margin-left = 0; + margin-right = 0; + modules-left = [ + "custom/launcher" + "hyprland/workspaces" + "tray" + ]; + modules-center = [ "clock" ]; + modules-right = [ + "cpu" + "memory" + "pulseaudio" + "network" + "battery" + "hyprland/language" + "custom/notification" + "custom/power-menu" + ]; + clock = { + calendar = { + format = { + today = "{}"; + }; + }; + format = " {:%H:%M}"; + tooltip = "true"; + tooltip-format = "{:%Y %B}\n{calendar}"; + format-alt = " {:%d/%m}"; + }; + "hyprland/workspaces" = { + active-only = false; + disable-scroll = true; + format = "{icon}"; + on-click = "activate"; + format-icons = { + sort-by-number = true; + }; + persistent-workspaces = { + "1" = [ ]; + "2" = [ ]; + "3" = [ ]; + "4" = [ ]; + "5" = [ ]; + }; + }; + cpu = { + format = " {usage}%"; + format-alt = " {avg_frequency} GHz"; + interval = 2; + on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --override font_size=14 --title float_ghostty btop'"; + }; + memory = { + format = "󰟜 {}%"; + format-alt = "󰟜 {used} GiB"; #  + interval = 2; + on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --override font_size=14 --title float_ghostty btop'"; + }; + disk = { + # path = "/"; + format = "󰋊 {percentage_used}%"; + interval = 60; + on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --override font_size=14 --title float_ghostty btop'"; + }; + network = { + format-wifi = " {signalStrength}%"; + format-ethernet = "󰀂 "; + tooltip-format = "Connected to {essid} {ifname} via {gwaddr}"; + format-linked = "{ifname} (No IP)"; + format-disconnected = "󰖪 "; + }; + tray = { + icon-size = 20; + spacing = 8; + }; + pulseaudio = { + format = "{icon} {volume}%"; + format-muted = " {volume}%"; + format-icons = { + default = [ "" ]; + }; + scroll-step = 2; + on-click = "${pkgs.pamixer}/bin/pamixer -t"; + on-click-right = "${pkgs.pavucontrol}/bin/pavucontrol"; + }; + # battery = { + # format = "{icon} {capacity}%"; + # format-icons = [ + # " " + # " " + # " " + # " " + # " " + # ]; + # format-charging = "{capacity}%"; + # format-full = "{capacity}%"; + # format-warning = "{capacity}%"; + # interval = 5; + # states = { + # warning = 20; + # }; + # format-time = "{H}h{M}m"; + # tooltip = true; + # tooltip-format = "{time}"; + # }; + "hyprland/language" = { + tooltip = true; + tooltip-format = "Keyboard layout"; + format = " {}"; + format-fr = "FR"; + format-en = "US"; + on-click = "${pkgs.hyprland}/bin/hyprctl switchxkblayout at-translated-set-2-keyboard next"; + }; + "custom/launcher" = { + format = ""; + on-click = "random-wallpaper"; + on-click-right = "${pkgs.rofi}/bin/rofi -show drun"; + tooltip = "true"; + tooltip-format = "Random Wallpaper"; + }; + "custom/notification" = { + tooltip = true; + tooltip-format = "Notifications"; + format = "{icon}"; + format-icons = { + notification = ""; + none = ""; + dnd-notification = ""; + dnd-none = ""; + inhibited-notification = ""; + inhibited-none = ""; + dnd-inhibited-notification = ""; + dnd-inhibited-none = ""; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "${pkgs.swaynotificationcenter}/bin/swaync-client -swb"; + on-click = "${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw"; + on-click-right = "${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw"; + escape = true; + }; + "custom/power-menu" = { + tooltip = true; + tooltip-format = "Power menu"; + format = ""; + on-click = "power-menu"; + }; + }; - }; } diff --git a/users/natalie/home/waybar/style.nix b/users/natalie/home/waybar/style.nix index c915eb0a89e3fb7d83b43c240933f4d5c4558ffe..048f66934053d4f9da0482ac511610aa11eefea3 100644 --- a/users/natalie/home/waybar/style.nix +++ b/users/natalie/home/waybar/style.nix @@ -1 +1,107 @@ -{ ... }: { } +{ ... }: +let + custom = { + font = "Maple Mono"; + font_size = "18px"; + font_weight = "bold"; + text_color = "#FBF1C7"; + background_0 = "#1D2021"; + background_1 = "#282828"; + border_color = "#A89984"; + red = "#CC241D"; + green = "#98971A"; + yellow = "#FABD2F"; + blue = "#458588"; + magenta = "#B16286"; + cyan = "#689D6A"; + orange = "#D65D0E"; + orange_bright = "#FE8019"; + opacity = "1"; + indicator_height = "2px"; + }; +in +{ + programs.waybar.style = with custom; '' + * { + border: none; + border-radius: 0px; + padding: 0; + margin: 0; + font-family: ${font}; + font-weight: ${font_weight}; + opacity: ${opacity}; + font-size: ${font_size}; + } + + window#waybar { + background: ${background_1}; + border-top: 1px solid ${border_color}; + } + + tooltip { + background: ${background_1}; + border: 1px solid ${border_color}; + } + tooltip label { + margin: 5px; + color: ${text_color}; + } + + #workspaces { + padding-left: 15px; + } + #workspaces button { + color: ${yellow}; + padding-left: 5px; + padding-right: 5px; + margin-right: 10px; + } + #workspaces button.empty { + color: ${text_color}; + } + #workspaces button.active { + color: ${orange_bright}; + } + + #clock { + color: ${text_color}; + } + + #tray { + margin-left: 10px; + color: ${text_color}; + } + #tray menu { + background: ${background_1}; + border: 1px solid ${border_color}; + padding: 8px; + } + #tray menuitem { + padding: 1px; + } + + #pulseaudio, #network, #cpu, #memory, #disk, #battery, #language, #custom-notification, #custom-power-menu { + padding-left: 5px; + padding-right: 5px; + margin-right: 10px; + color: ${text_color}; + } + + #pulseaudio, #language, #custom-notification { + margin-left: 15px; + } + + #custom-power-menu { + padding-right: 2px; + margin-right: 5px; + } + + #custom-launcher { + font-size: 20px; + color: ${text_color}; + font-weight: bold; + margin-left: 15px; + padding-right: 10px; + } + ''; +} -- 2.54.0 From 006c2caf1f72fc39cda66997e7e4ca1cd34251e4 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 11:09:16 -0700 Subject: [PATCH 12/27] fix: wrong package names in hyprland exec-once --- users/natalie/home/hyprland/exec-once.nix | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/users/natalie/home/hyprland/exec-once.nix b/users/natalie/home/hyprland/exec-once.nix index 1bb6afc6d4a83b841cf389e8277e6b9d71d6c62a..06429381c2b90f9df1d62afd5e0fb348faaeba0a 100644 --- a/users/natalie/home/hyprland/exec-once.nix +++ b/users/natalie/home/hyprland/exec-once.nix @@ -1,4 +1,9 @@ -{ pkgs, ... }: +{ + pkgs, + inputs, + currentSystem, + ... +}: { wayland.windowManager.hyprland.settings.exec-once = [ # "hash dbus-update-activation-environment 2>/dev/null" @@ -7,12 +12,12 @@ "${pkgs.hyprlock}/bin/hyprlock" - "${pkgs.network-manager-applet}/bin/nm-applet &" + "${pkgs.networkmanagerapplet}/bin/nm-applet &" "${pkgs.wl-clip-persist}/bin/wl-clip-persist --clipboard both &" "${pkgs.wl-clipboard}/bin/wl-paste --watch cliphist store &" "${pkgs.waybar}/bin/waybar &" - "${pkgs.swaync}/bin/swaync &" - "${pkgs.vicinae}/bin/vicinae server &" + "${pkgs.swaynotificationcenter}/bin/swaync &" + "${inputs.vicinae.packages.${currentSystem}.default}/bin/vicinae server &" "${pkgs.udiskie}/bin/udiskie --automount --notify --smart-tray &" # "hyprctl setcursor Bibata-Modern-Ice 24 &" # "init-wallpaper &" -- 2.54.0 From fbddb0a867385b4cf18724a648a3c2b6f1fa9493 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 13:47:06 -0700 Subject: [PATCH 13/27] fix: set default to be an empty string to prevent error when no shader provided --- modules/home/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/default.nix b/modules/home/default.nix index 6174ec2d4a905f152e48ba4a09494e22a634170a..7b6907b82e2bf2c8bf29407d31020aaac2e35a36 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -19,7 +19,7 @@ in options = { programs.ghostty.shader = lib.mkOption { type = lib.types.str; - default = { }; + default = ""; description = "set the ghostty shader, relative to 'files/ghostty'"; }; programs.android-sdk.enable = lib.mkOption { -- 2.54.0 From 6045cbf0f62a8a50ec2f16a9668132cb5e85e158 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 14:16:39 -0700 Subject: [PATCH 14/27] fix (natalie): forgot to include waybar directory, and various other hyprland bug fixes --- users/natalie/home.nix | 4 +++ users/natalie/home/default.nix | 2 ++ users/natalie/home/gtk.nix | 35 +++++++++++++++++++++++ users/natalie/home/hyprland/exec-once.nix | 3 +- users/natalie/home/hyprland/hyprland.nix | 2 ++ users/natalie/home/hyprland/hyprlock.nix | 2 +- users/natalie/home/hyprland/monitors.nix | 17 ++++++----- users/natalie/home/hyprland/settings.nix | 5 +++- users/natalie/home/waybar/settings.nix | 4 +-- 9 files changed, 61 insertions(+), 13 deletions(-) create mode 100644 users/natalie/home/gtk.nix diff --git a/users/natalie/home.nix b/users/natalie/home.nix index 43f27d39f84f27952928fb959dcb481cb7465c82..9b1db798d56f2814499e41da4ef75bdeb17e74a6 100644 --- a/users/natalie/home.nix +++ b/users/natalie/home.nix @@ -19,6 +19,10 @@ lsd.enable = true; android-sdk.enable = true; # sort-lines:end + ghostty = { + enable = true; + settings.theme = "Catppuccin Mocha"; + }; fish = { shellAliases = diff --git a/users/natalie/home/default.nix b/users/natalie/home/default.nix index 17c17e9dfdb47331f6757fe5fb789e94c25caefa..57100be42fe9fb35a7ff7122423d1724193f0a39 100644 --- a/users/natalie/home/default.nix +++ b/users/natalie/home/default.nix @@ -5,5 +5,7 @@ ./hyprland ./vicinae.nix ./swaync.nix + ./gtk.nix + ./waybar ]; } diff --git a/users/natalie/home/gtk.nix b/users/natalie/home/gtk.nix new file mode 100644 index 0000000000000000000000000000000000000000..c3e1c23823ddce97763585284c0ac22e91d10fb7 --- /dev/null +++ b/users/natalie/home/gtk.nix @@ -0,0 +1,35 @@ +{ pkgs, ... }: +{ + + gtk = { + enable = true; + + font = { + name = "Maple Mono"; + size = 12; + }; + theme = { + name = "Catpuccin gtk"; + package = pkgs.magnetic-catppuccin-gtk.override { + tweaks = [ + "float" + ]; + }; + }; + iconTheme = { + name = "Arashi"; + package = pkgs.arashi; + }; + cursorTheme = { + name = "Bibata-Modern-Ice"; + package = pkgs.bibata-cursors; + size = 24; + }; + }; + + home.pointerCursor = { + name = "Bibata-Modern-Ice"; + package = pkgs.bibata-cursors; + size = 24; + }; +} diff --git a/users/natalie/home/hyprland/exec-once.nix b/users/natalie/home/hyprland/exec-once.nix index 06429381c2b90f9df1d62afd5e0fb348faaeba0a..57bc90b4eb490f4268e857a3fa816b78dc06c6d1 100644 --- a/users/natalie/home/hyprland/exec-once.nix +++ b/users/natalie/home/hyprland/exec-once.nix @@ -19,7 +19,8 @@ "${pkgs.swaynotificationcenter}/bin/swaync &" "${inputs.vicinae.packages.${currentSystem}.default}/bin/vicinae server &" "${pkgs.udiskie}/bin/udiskie --automount --notify --smart-tray &" - # "hyprctl setcursor Bibata-Modern-Ice 24 &" + "${pkgs.hyprland}/bin/hyprctl setcursor Bibata-Modern-Ice 24 &" + "${pkgs.tmux}/bin/tmux setenv -g HYPRLAND_INSTANCE_SIGNATURE '$HYPRLAND_INSTANCE_SIGNATURE'" # "init-wallpaper &" # # "ghostty --gtk-single-instance=true --quit-after-last-window-closed=false --initial-window=false" diff --git a/users/natalie/home/hyprland/hyprland.nix b/users/natalie/home/hyprland/hyprland.nix index 909b2938dd1939ef6556352e1a6e00ffbca520f3..7ee7df03e53ee41b94ce364a1597f3d240f10e2e 100644 --- a/users/natalie/home/hyprland/hyprland.nix +++ b/users/natalie/home/hyprland/hyprland.nix @@ -14,6 +14,8 @@ wayland direnv playerctl + waybar + networkmanagerapplet ]; systemd.user.targets.hyprland-session.Unit.Wants = [ "xdg-desktop-autostart.target" diff --git a/users/natalie/home/hyprland/hyprlock.nix b/users/natalie/home/hyprland/hyprlock.nix index 37cfb0022a8d68a49531555466f6c6cfee2a76e0..60f780414f25acb7c0b7b52aaa5e2221bb2a3967 100644 --- a/users/natalie/home/hyprland/hyprlock.nix +++ b/users/natalie/home/hyprland/hyprlock.nix @@ -1,7 +1,7 @@ { ... }: { programs.hyprlock = { - enable = true; + enable = false; settings = { general = { diff --git a/users/natalie/home/hyprland/monitors.nix b/users/natalie/home/hyprland/monitors.nix index ae63a8e983bd40164ca183407a4c596d7c8d94cf..fcb3e3309fdd4a159e7d6e66ba3f60ef8e7f798c 100644 --- a/users/natalie/home/hyprland/monitors.nix +++ b/users/natalie/home/hyprland/monitors.nix @@ -1,14 +1,17 @@ { pkgs, ... }: { wayland.windowManager.hyprland = { - settings.monitor = [ ",preferred,auto,auto" ]; + settings.monitor = [ + "HDMI-A-1, 1980x1080@144, 0x0, auto" + "DP-1,2560x1440@144,auto,auto" + ]; - extraConfig = '' - # hyprlang noerror true - source = ~/.config/hypr/monitors.conf - source = ~/.config/hypr/workspaces.conf - # hyprlang noerror false - ''; + # extraConfig = '' + # # hyprlang noerror true + # source = ~/.config/hypr/monitors.conf + # source = ~/.config/hypr/workspaces.conf + # # hyprlang noerror false + # ''; }; home.packages = with pkgs; [ nwg-displays ]; diff --git a/users/natalie/home/hyprland/settings.nix b/users/natalie/home/hyprland/settings.nix index 522d975c669889907cc601d3fecabed57cabead6..5a14c824e7f5c64c8078dbf4e48cbfb659b3affe 100644 --- a/users/natalie/home/hyprland/settings.nix +++ b/users/natalie/home/hyprland/settings.nix @@ -29,7 +29,7 @@ # https://wiki.hypr.land/Configuring/Dwindle-Layout/ dwindle = { - psuedotile = false; + pseudotile = false; force_split = 2; preserve_split = true; }; @@ -115,6 +115,9 @@ xwayland = { force_zero_scaling = true; }; + debug = { + disable_logs = false; + }; }; } diff --git a/users/natalie/home/waybar/settings.nix b/users/natalie/home/waybar/settings.nix index 373f9a97969e1f0bc46c52fd2c16ee5e72748a42..bf25fe7d81975ee4252e16086e7c5097f8f8e885 100644 --- a/users/natalie/home/waybar/settings.nix +++ b/users/natalie/home/waybar/settings.nix @@ -1,4 +1,4 @@ -{ ... }: +{ pkgs, ... }: let custom = { font = "Maple Mono"; @@ -38,10 +38,8 @@ in "memory" "pulseaudio" "network" - "battery" "hyprland/language" "custom/notification" - "custom/power-menu" ]; clock = { calendar = { -- 2.54.0 From f3ef1b557ba87c0f01d605a8162a68d97f061caa Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 14:57:05 -0700 Subject: [PATCH 15/27] feat (natalie): add split-workspaces for different workspace numbering per monitor --- flake.lock | 585 +++++++++++++++++++++--- flake.nix | 6 + users/natalie/home/hyprland/binds.nix | 46 +- users/natalie/home/hyprland/default.nix | 5 +- users/natalie/home/hyprland/plugins.nix | 16 + 5 files changed, 572 insertions(+), 86 deletions(-) create mode 100644 users/natalie/home/hyprland/plugins.nix diff --git a/flake.lock b/flake.lock index 6f0b0c1207ee63b90048debfd3fe72682aec5209..7425b940de5d0d9f1293d270f436e0e8fc2d5f7f 100644 --- a/flake.lock +++ b/flake.lock @@ -51,6 +51,39 @@ "type": "github" } }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1760101617, + "narHash": "sha256-8jf/3ZCi+B7zYpIyV04+3wm72BD7Z801IlOzsOACR7I=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "1826a9923881320306231b1c2090379ebf9fa4f8", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -94,6 +127,22 @@ } }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1751685974, @@ -109,22 +158,6 @@ "url": "https://git.lix.systems/lix-project/flake-compat.git" } }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-compat_3": { "flake": false, "locked": { @@ -141,6 +174,22 @@ "type": "github" } }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -182,7 +231,7 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1731533236, @@ -199,33 +248,15 @@ } }, "flake-utils_3": { - "inputs": { - "systems": "systems_4" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { "inputs": { "systems": "systems_5" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -234,10 +265,28 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_4": { "inputs": { "systems": "systems_6" }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_7" + }, "locked": { "lastModified": 1710146030, "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", @@ -254,7 +303,7 @@ }, "flake-utils_6": { "inputs": { - "systems": "systems_7" + "systems": "systems_8" }, "locked": { "lastModified": 1705309234, @@ -271,7 +320,13 @@ } }, "gitignore": { - "flake": false, + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, "locked": { "lastModified": 1709087332, "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", @@ -287,6 +342,22 @@ } }, "gitignore_2": { + "flake": false, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_3": { "inputs": { "nixpkgs": [ "zls", @@ -328,6 +399,265 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1760445448, + "narHash": "sha256-fXGjL6dw31FPFRrmIemzGiNSlfvEJTJNsmadZi+qNhI=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "50fb9f069219f338a11cf0bcccb9e58357d67757", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-protocols": "hyprland-protocols", + "hyprland-qtutils": "hyprland-qtutils", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems_2", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1761780088, + "narHash": "sha256-ylKrWQeIAGyysfHbgZpcWUs9UsbiOBIVXTPqaiV3lf0=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "6ade4d58cab67e18aa758ef664e36421cab4d8b2", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1759610243, + "narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprland-qtutils", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1749154592, + "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-qtutils", + "hyprlang", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1759080228, + "narHash": "sha256-RgDoAja0T1hnF0pTc56xPfLfFOO8Utol2iITwYbUhTk=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "629b15c19fa4082e4ce6be09fdb89e8c3312aed7", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1758927902, + "narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1759619523, + "narHash": "sha256-r1ed7AR2ZEb2U8gy321/Xcp1ho2tzn+gG1te/Wxsj1A=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "3df7bde01efb3a3e8e678d1155f2aa3f19e177ef", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1755184602, + "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "langref": { "flake": false, "locked": { @@ -375,6 +705,21 @@ "type": "github" } }, + "nix-filter": { + "locked": { + "lastModified": 1693833173, + "narHash": "sha256-hlMABKrGbEiJD5dwUSfnw1CQ3bG7KKwDV+Nx3bEZd7U=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "ac030bd9ba98e318e1f4c4328d60766ade8ebe8b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, "nix-index-database": { "inputs": { "nixpkgs": [ @@ -398,8 +743,8 @@ "nix-options-search": { "inputs": { "flake-utils": "flake-utils_2", - "gitignore": "gitignore", - "nixpkgs": "nixpkgs" + "gitignore": "gitignore_2", + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1756245499, @@ -416,6 +761,22 @@ } }, "nixpkgs": { + "locked": { + "lastModified": 1761114652, + "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 1736012469, "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", @@ -431,7 +792,7 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_3": { "locked": { "lastModified": 1761236834, "narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=", @@ -446,7 +807,7 @@ "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1759036355, "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", @@ -462,7 +823,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1708161998, "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=", @@ -478,7 +839,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1717696253, "narHash": "sha256-1+ua0ggXlYYPLTmMl3YeYYsBXDSCqT+Gw3u6l4gvMhA=", @@ -496,13 +857,13 @@ }, "nvf": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", "mnw": "mnw", "nixpkgs": [ "nixpkgs" ], - "systems": "systems_3" + "systems": "systems_4" }, "locked": { "lastModified": 1761238604, @@ -531,18 +892,43 @@ "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1760663237, + "narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "android-nixpkgs": "android-nixpkgs", "apple-fonts": "apple-fonts", "darwin": "darwin", "home-manager": "home-manager", + "hyprland": "hyprland", "moonlight": "moonlight", "nix-index-database": "nix-index-database", "nix-options-search": "nix-options-search", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nvf": "nvf", "rust-overlay": "rust-overlay", + "split-monitor-workspaces": "split-monitor-workspaces", "vicinae": "vicinae", "zen-browser": "zen-browser", "zig": "zig", @@ -653,6 +1039,27 @@ "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" } }, + "split-monitor-workspaces": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nix-filter": "nix-filter" + }, + "locked": { + "lastModified": 1759855608, + "narHash": "sha256-DO6OaOY8G4HFP7Rz6gRCG6K2PZ8NrXkDIF6NJGRVcbs=", + "owner": "Duckonaut", + "repo": "split-monitor-workspaces", + "rev": "10719e725ade06da410db52268f4b9cf8ea5f63c", + "type": "github" + }, + "original": { + "owner": "Duckonaut", + "repo": "split-monitor-workspaces", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -670,16 +1077,16 @@ }, "systems_2": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default", + "repo": "default-linux", "type": "github" } }, @@ -758,10 +1165,25 @@ "type": "github" } }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "vicinae": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1761759538, @@ -777,6 +1199,47 @@ "type": "github" } }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1760713634, + "narHash": "sha256-5HXelmz2x/uO26lvW7MudnadbAfoBnve4tRBiDVLtOM=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "753bbbdf6a052994da94062e5b753288cef28dfb", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, "zen-browser": { "inputs": { "nixpkgs": [ @@ -799,9 +1262,9 @@ }, "zig": { "inputs": { - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1760747435, @@ -819,7 +1282,7 @@ }, "zig-overlay": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "flake-utils": "flake-utils_6", "nixpkgs": [ "zls", @@ -843,9 +1306,9 @@ "zls": { "inputs": { "flake-utils": "flake-utils_5", - "gitignore": "gitignore_2", + "gitignore": "gitignore_3", "langref": "langref", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "zig-overlay": "zig-overlay" }, "locked": { diff --git a/flake.nix b/flake.nix index 43587f441ffffc7d3db2f4fb72f91955104b0b87..3e5fe6f5b088a4e03b8dbf35143fafff2b202f8c 100644 --- a/flake.nix +++ b/flake.nix @@ -24,6 +24,12 @@ moonlight.url = "github:moonlight-mod/moonlight"; # Add `/develop` to the flake URL to use nightly. moonlight.inputs.nixpkgs.follows = "nixpkgs"; + hyprland.url = "github:hyprwm/Hyprland"; + split-monitor-workspaces = { + url = "github:Duckonaut/split-monitor-workspaces"; + inputs.hyprland.follows = "hyprland"; + }; + vicinae.url = "github:vicinaehq/vicinae"; zen-browser = { diff --git a/users/natalie/home/hyprland/binds.nix b/users/natalie/home/hyprland/binds.nix index 4c30cd70b41e1c56fe6c83944caf49f85e6e60f9..a3b0968a0a794356e19cce23fe0e8aa08a1f6aa7 100644 --- a/users/natalie/home/hyprland/binds.nix +++ b/users/natalie/home/hyprland/binds.nix @@ -72,29 +72,29 @@ "CTRL ALT, down, exec, hyprctl dispatch focuswindow tiled" # switch workspace - "$mainMod, 1, workspace, 1" - "$mainMod, 2, workspace, 2" - "$mainMod, 3, workspace, 3" - "$mainMod, 4, workspace, 4" - "$mainMod, 5, workspace, 5" - "$mainMod, 6, workspace, 6" - "$mainMod, 7, workspace, 7" - "$mainMod, 8, workspace, 8" - "$mainMod, 9, workspace, 9" - "$mainMod, 0, workspace, 10" + "$mainMod, 1, split-workspace, 1" + "$mainMod, 2, split-workspace, 2" + "$mainMod, 3, split-workspace, 3" + "$mainMod, 4, split-workspace, 4" + "$mainMod, 5, split-workspace, 5" + "$mainMod, 6, split-workspace, 6" + "$mainMod, 7, split-workspace, 7" + "$mainMod, 8, split-workspace, 8" + "$mainMod, 9, split-workspace, 9" + "$mainMod, 0, split-workspace, 10" # same as above, but switch to the workspace - "$mainMod SHIFT, 1, movetoworkspacesilent, 1" # movetoworkspacesilent - "$mainMod SHIFT, 2, movetoworkspacesilent, 2" - "$mainMod SHIFT, 3, movetoworkspacesilent, 3" - "$mainMod SHIFT, 4, movetoworkspacesilent, 4" - "$mainMod SHIFT, 5, movetoworkspacesilent, 5" - "$mainMod SHIFT, 6, movetoworkspacesilent, 6" - "$mainMod SHIFT, 7, movetoworkspacesilent, 7" - "$mainMod SHIFT, 8, movetoworkspacesilent, 8" - "$mainMod SHIFT, 9, movetoworkspacesilent, 9" - "$mainMod SHIFT, 0, movetoworkspacesilent, 10" - "$mainMod CTRL, c, movetoworkspace, empty" + "$mainMod SHIFT, 1, split-movetoworkspacesilent, 1" # movetoworkspacesilent + "$mainMod SHIFT, 2, split-movetoworkspacesilent, 2" + "$mainMod SHIFT, 3, split-movetoworkspacesilent, 3" + "$mainMod SHIFT, 4, split-movetoworkspacesilent, 4" + "$mainMod SHIFT, 5, split-movetoworkspacesilent, 5" + "$mainMod SHIFT, 6, split-movetoworkspacesilent, 6" + "$mainMod SHIFT, 7, split-movetoworkspacesilent, 7" + "$mainMod SHIFT, 8, split-movetoworkspacesilent, 8" + "$mainMod SHIFT, 9, split-movetoworkspacesilent, 9" + "$mainMod SHIFT, 0, split-movetoworkspacesilent, 10" + "$mainMod CTRL, c, split-movetoworkspace, empty" # window control "$mainMod SHIFT, left, movewindow, l" @@ -131,8 +131,8 @@ ",XF86AudioPrev,exec, playerctl previous" ",XF86AudioStop,exec, playerctl stop" - "$mainMod, mouse_down, workspace, e-1" - "$mainMod, mouse_up, workspace, e+1" + "$mainMod, mouse_down, split-workspace, e-1" + "$mainMod, mouse_up, split-workspace, e+1" # clipboard manager "$mainMod, V, exec, vicinae vicinae://extensions/vicinae/clipboard/history" diff --git a/users/natalie/home/hyprland/default.nix b/users/natalie/home/hyprland/default.nix index dff992714274e09e3de63dff1e1e110e13e95cfb..da0fd590c1994b21a6922fac68598c1aa70d60da 100644 --- a/users/natalie/home/hyprland/default.nix +++ b/users/natalie/home/hyprland/default.nix @@ -6,8 +6,9 @@ ./monitors.nix ./settings.nix ./binds.nix - # ./windowrules.nix + ./windowrules.nix ./hyprlock.nix - # ./variables.nix + ./variables.nix + ./plugins.nix ]; } diff --git a/users/natalie/home/hyprland/plugins.nix b/users/natalie/home/hyprland/plugins.nix new file mode 100644 index 0000000000000000000000000000000000000000..32697739bb1b84b29123d72171c02687fe8b3acd --- /dev/null +++ b/users/natalie/home/hyprland/plugins.nix @@ -0,0 +1,16 @@ +{ pkgs, inputs, ... }: +{ + wayland.windowManager.hyprland = { + plugins = [ + inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces + ]; + settings = { + plugin = { + split-monitor-workspaces = { + count = 5; + keep_focused = 0; + }; + }; + }; + }; +} -- 2.54.0 From 2d87593987b9c8605e95397a82096b3377e07db2 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 15:49:00 -0700 Subject: [PATCH 16/27] fix (natalie): change gtk icon theme to something that actually works --- users/natalie/home/gtk.nix | 6 +++--- users/natalie/home/vicinae.nix | 12 +++++++++++- users/natalie/home/waybar/settings.nix | 11 ++++++++--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/users/natalie/home/gtk.nix b/users/natalie/home/gtk.nix index c3e1c23823ddce97763585284c0ac22e91d10fb7..586985e1e4dcf610ea367eca2f3a6d2fd001164b 100644 --- a/users/natalie/home/gtk.nix +++ b/users/natalie/home/gtk.nix @@ -9,7 +9,7 @@ size = 12; }; theme = { - name = "Catpuccin gtk"; + name = "Catppuccin-GTK-Dark"; package = pkgs.magnetic-catppuccin-gtk.override { tweaks = [ "float" @@ -17,8 +17,8 @@ }; }; iconTheme = { - name = "Arashi"; - package = pkgs.arashi; + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; }; cursorTheme = { name = "Bibata-Modern-Ice"; diff --git a/users/natalie/home/vicinae.nix b/users/natalie/home/vicinae.nix index 9e2068a3bb2852a77cc5c92b80e55c2f8e8b560e..5276e4bb4a02d62e5e02631b8317a8201c571e9d 100644 --- a/users/natalie/home/vicinae.nix +++ b/users/natalie/home/vicinae.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ inputs, pkgs, ... }: { services.vicinae = { enable = true; @@ -16,5 +16,15 @@ }; }; + + # extensions = [ + # (inputs.vicinae.mkVicinaeExtension.${pkgs.system} { + # inherit pkgs; + # name = "nixpkgs search"; + # src = pkgs.fetchFromGithub { + # + # }; + # }) + # ]; }; } diff --git a/users/natalie/home/waybar/settings.nix b/users/natalie/home/waybar/settings.nix index bf25fe7d81975ee4252e16086e7c5097f8f8e885..a25d1892bb58b5c959cf8a53e1284f6874be1bd1 100644 --- a/users/natalie/home/waybar/settings.nix +++ b/users/natalie/home/waybar/settings.nix @@ -1,4 +1,9 @@ -{ pkgs, ... }: +{ + pkgs, + inputs, + currentSystem, + ... +}: let custom = { font = "Maple Mono"; @@ -30,7 +35,6 @@ in modules-left = [ "custom/launcher" "hyprland/workspaces" - "tray" ]; modules-center = [ "clock" ]; modules-right = [ @@ -39,6 +43,7 @@ in "pulseaudio" "network" "hyprland/language" + "tray" "custom/notification" ]; clock = { @@ -138,7 +143,7 @@ in "custom/launcher" = { format = ""; on-click = "random-wallpaper"; - on-click-right = "${pkgs.rofi}/bin/rofi -show drun"; + on-click-right = "${inputs.vicinae.packages.${currentSystem}.default}vicinae vicinae://toggle"; tooltip = "true"; tooltip-format = "Random Wallpaper"; }; -- 2.54.0 From 456b76e721b8e72597b60bb5bab034427dfbcb76 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 15:53:25 -0700 Subject: [PATCH 17/27] feat (natalie): add polkit agent --- users/natalie/home/hyprland/exec-once.nix | 1 + users/natalie/home/hyprland/hyprland.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/users/natalie/home/hyprland/exec-once.nix b/users/natalie/home/hyprland/exec-once.nix index 57bc90b4eb490f4268e857a3fa816b78dc06c6d1..22e44ef6ff1d405e32d2e987a35da4c782183700 100644 --- a/users/natalie/home/hyprland/exec-once.nix +++ b/users/natalie/home/hyprland/exec-once.nix @@ -21,6 +21,7 @@ "${pkgs.udiskie}/bin/udiskie --automount --notify --smart-tray &" "${pkgs.hyprland}/bin/hyprctl setcursor Bibata-Modern-Ice 24 &" "${pkgs.tmux}/bin/tmux setenv -g HYPRLAND_INSTANCE_SIGNATURE '$HYPRLAND_INSTANCE_SIGNATURE'" + "systemctl --user start hyprpolkitagent" # "init-wallpaper &" # # "ghostty --gtk-single-instance=true --quit-after-last-window-closed=false --initial-window=false" diff --git a/users/natalie/home/hyprland/hyprland.nix b/users/natalie/home/hyprland/hyprland.nix index 7ee7df03e53ee41b94ce364a1597f3d240f10e2e..23f8d23415b856bb31cc100bdf1b4ce97917d319 100644 --- a/users/natalie/home/hyprland/hyprland.nix +++ b/users/natalie/home/hyprland/hyprland.nix @@ -16,6 +16,7 @@ playerctl waybar networkmanagerapplet + hyprpolkitagent ]; systemd.user.targets.hyprland-session.Unit.Wants = [ "xdg-desktop-autostart.target" -- 2.54.0 From 5a4dc3b0c38ce3a1e14ec94a6988fa085297feb4 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 16:24:46 -0700 Subject: [PATCH 18/27] feat (natalie): enable UWSM to better manage wayland utilities via systemd, and add sddm --- users/natalie/desktop/configuration.nix | 13 ++++++++++++- users/natalie/home/hyprland/exec-once.nix | 2 +- users/natalie/home/hyprland/hyprland.nix | 13 ++++++++----- users/natalie/home/hyprland/monitors.nix | 4 ++-- users/natalie/home/waybar/waybar.nix | 1 + 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/users/natalie/desktop/configuration.nix b/users/natalie/desktop/configuration.nix index 56bb397fbcb1dfbd91e223216b0940d6a8d8bdc4..4a872b330b4d5d554afffaff5293e37653e2d7c4 100644 --- a/users/natalie/desktop/configuration.nix +++ b/users/natalie/desktop/configuration.nix @@ -10,8 +10,19 @@ ./hardware-configuration.nix ]; documentation.man.generateCaches = false; + services.displayManager = { + enable = true; + sddm = { + enable = true; + wayland.enable = true; + }; + }; + programs = { - hyprland.enable = true; + hyprland = { + enable = true; + withUWSM = true; + }; gamemode.enable = true; _1password.enable = true; diff --git a/users/natalie/home/hyprland/exec-once.nix b/users/natalie/home/hyprland/exec-once.nix index 22e44ef6ff1d405e32d2e987a35da4c782183700..947de457ba8c0b7d42dbd3245fb63264244fed9b 100644 --- a/users/natalie/home/hyprland/exec-once.nix +++ b/users/natalie/home/hyprland/exec-once.nix @@ -15,7 +15,7 @@ "${pkgs.networkmanagerapplet}/bin/nm-applet &" "${pkgs.wl-clip-persist}/bin/wl-clip-persist --clipboard both &" "${pkgs.wl-clipboard}/bin/wl-paste --watch cliphist store &" - "${pkgs.waybar}/bin/waybar &" + # "${pkgs.waybar}/bin/waybar &" "${pkgs.swaynotificationcenter}/bin/swaync &" "${inputs.vicinae.packages.${currentSystem}.default}/bin/vicinae server &" "${pkgs.udiskie}/bin/udiskie --automount --notify --smart-tray &" diff --git a/users/natalie/home/hyprland/hyprland.nix b/users/natalie/home/hyprland/hyprland.nix index 23f8d23415b856bb31cc100bdf1b4ce97917d319..126b41c9993c13303c723b746087b4f547ffe10d 100644 --- a/users/natalie/home/hyprland/hyprland.nix +++ b/users/natalie/home/hyprland/hyprland.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { home.packages = with pkgs; [ swww @@ -18,9 +18,9 @@ networkmanagerapplet hyprpolkitagent ]; - systemd.user.targets.hyprland-session.Unit.Wants = [ - "xdg-desktop-autostart.target" - ]; + # systemd.user.targets.hyprland-session.Unit.Wants = [ + # "xdg-desktop-autostart.target" + # ]; wayland.windowManager.hyprland = { enable = true; package = null; @@ -29,6 +29,9 @@ xwayland = { enable = true; }; - systemd.enable = true; + systemd.enable = false; }; + # https://wiki.hypr.land/Nix/Hyprland-on-Home-Manager/#nixos-uwsm + xdg.configFile."uwsm/env".source = + "${config.home.sessionVariablesPackage}/etc/profile.d/hm-session-vars.sh"; } diff --git a/users/natalie/home/hyprland/monitors.nix b/users/natalie/home/hyprland/monitors.nix index fcb3e3309fdd4a159e7d6e66ba3f60ef8e7f798c..1bcaa833b63f4725cab0b124918ea3c64a910156 100644 --- a/users/natalie/home/hyprland/monitors.nix +++ b/users/natalie/home/hyprland/monitors.nix @@ -2,8 +2,8 @@ { wayland.windowManager.hyprland = { settings.monitor = [ - "HDMI-A-1, 1980x1080@144, 0x0, auto" - "DP-1,2560x1440@144,auto,auto" + "HDMI-A-2, 1980x1080@144, 0x0, auto" + "DP-2,2560x1440@144,auto,auto" ]; # extraConfig = '' diff --git a/users/natalie/home/waybar/waybar.nix b/users/natalie/home/waybar/waybar.nix index bd925edcbe22647ff5cf3c9408952311bf628016..67a25fee81417c370526e6a5b6aac1656831148f 100644 --- a/users/natalie/home/waybar/waybar.nix +++ b/users/natalie/home/waybar/waybar.nix @@ -2,5 +2,6 @@ { programs.waybar = { enable = true; + systemd.enable = true; }; } -- 2.54.0 From a4898824baec822428b5b531ddd26a479146a2be Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 19:17:25 -0700 Subject: [PATCH 19/27] feat (natalie): add screenshot util, and with it a method for converting a folder of shell scripts into nix programs. --- users/natalie/home/default.nix | 1 + users/natalie/home/hyprland/binds.nix | 4 +-- users/natalie/home/hyprland/hyprland.nix | 2 +- users/natalie/home/scripts/default.nix | 26 ++++++++++++++ .../home/scripts/scripts/screenshot.sh | 34 +++++++++++++++++++ users/natalie/home/waybar/settings.nix | 7 ++-- 6 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 users/natalie/home/scripts/default.nix create mode 100644 users/natalie/home/scripts/scripts/screenshot.sh diff --git a/users/natalie/home/default.nix b/users/natalie/home/default.nix index 57100be42fe9fb35a7ff7122423d1724193f0a39..445c2f4561b6fe3a0a7c394810c132ce4da4e2e2 100644 --- a/users/natalie/home/default.nix +++ b/users/natalie/home/default.nix @@ -7,5 +7,6 @@ ./swaync.nix ./gtk.nix ./waybar + ./scripts ]; } diff --git a/users/natalie/home/hyprland/binds.nix b/users/natalie/home/hyprland/binds.nix index a3b0968a0a794356e19cce23fe0e8aa08a1f6aa7..f0e655c8cfccc4a8977caf9a6edfeebe4f142053 100644 --- a/users/natalie/home/hyprland/binds.nix +++ b/users/natalie/home/hyprland/binds.nix @@ -1,4 +1,4 @@ -{ ... }: +{ pkgs, ... }: { wayland.windowManager.hyprland.settings = { binds = { @@ -10,7 +10,7 @@ "$mainMod, F1, exec, show-keybinds" # keybindings - "$mainMod, Return, exec, ghostty --gtk-single-instance=true" + "$mainMod, Return, exec, ${pkgs.ghostty}/bin/ghostty --gtk-single-instance=true" "$mainMod, P, pseudo," "$mainMod, C, killactive," "$mainMod, M, exit, " diff --git a/users/natalie/home/hyprland/hyprland.nix b/users/natalie/home/hyprland/hyprland.nix index 126b41c9993c13303c723b746087b4f547ffe10d..0cece8848cead1e0cc27c017d0ea3523983bf6d3 100644 --- a/users/natalie/home/hyprland/hyprland.nix +++ b/users/natalie/home/hyprland/hyprland.nix @@ -12,11 +12,11 @@ wf-recorder glib wayland - direnv playerctl waybar networkmanagerapplet hyprpolkitagent + swappy ]; # systemd.user.targets.hyprland-session.Unit.Wants = [ # "xdg-desktop-autostart.target" diff --git a/users/natalie/home/scripts/default.nix b/users/natalie/home/scripts/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..dfedf068302d3c1c013beda7d55235b2186f247a --- /dev/null +++ b/users/natalie/home/scripts/default.nix @@ -0,0 +1,26 @@ +{ pkgs, ... }: +let + scriptDir = ./scripts; + + mkScript = name: { + inherit name; + value = pkgs.writeScriptBin (builtins.replaceStrings [ ".sh" ] [ "" ] name) ( + builtins.readFile (scriptDir + "/${name}") + ); + }; + + scriptsSet = builtins.listToAttrs ( + map mkScript ( + builtins.attrNames ( + pkgs.lib.filterAttrs (n: v: v == "regular" && (pkgs.lib.hasSuffix ".sh" n)) ( + builtins.readDir ./scripts + ) + ) + ) + ); + scripts = builtins.attrValues scriptsSet; + +in +{ + home.packages = scripts; +} diff --git a/users/natalie/home/scripts/scripts/screenshot.sh b/users/natalie/home/scripts/scripts/screenshot.sh new file mode 100644 index 0000000000000000000000000000000000000000..fe324d8cf2e2dd622714bd323355ba91a0cf5ddc --- /dev/null +++ b/users/natalie/home/scripts/scripts/screenshot.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +dir="$HOME/Pictures/Screenshots" +time=$(date +'%Y_%m_%d_at_%Hh%Mm%Ss') +file="${dir}/Screenshot_${time}.png" + +copy() { + GRIMBLAST_HIDE_CURSOR=0 grimblast --notify --freeze copy area +} + +save() { + GRIMBLAST_HIDE_CURSOR=0 grimblast --notify --freeze save area "$file" +} + +swappy_() { + GRIMBLAST_HIDE_CURSOR=0 grimblast --notify --freeze save area "$file" + swappy -f "$file" +} + +if [[ ! -d "$dir" ]]; then + mkdir -p "$dir" +fi + +if [[ "$1" == "--copy" ]]; then + copy +elif [[ "$1" == "--save" ]]; then + save +elif [[ "$1" == "--swappy" ]]; then + swappy_ +else + echo -e "Available Options: --copy --save --swappy" +fi + +exit 0 diff --git a/users/natalie/home/waybar/settings.nix b/users/natalie/home/waybar/settings.nix index a25d1892bb58b5c959cf8a53e1284f6874be1bd1..266ce1a50c0c94a22d2bb63560c565faafb745fd 100644 --- a/users/natalie/home/waybar/settings.nix +++ b/users/natalie/home/waybar/settings.nix @@ -45,6 +45,7 @@ in "hyprland/language" "tray" "custom/notification" + "custom/power-menu" ]; clock = { calendar = { @@ -77,19 +78,19 @@ in format = " {usage}%"; format-alt = " {avg_frequency} GHz"; interval = 2; - on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --override font_size=14 --title float_ghostty btop'"; + on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --font-size=14 -e btop'"; }; memory = { format = "󰟜 {}%"; format-alt = "󰟜 {used} GiB"; #  interval = 2; - on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --override font_size=14 --title float_ghostty btop'"; + on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --font-size=14 -e btop'"; }; disk = { # path = "/"; format = "󰋊 {percentage_used}%"; interval = 60; - on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --override font_size=14 --title float_ghostty btop'"; + on-click-right = "${pkgs.hyprland}/bin/hyprctl dispatch exec '[float; center; size 950 650] ${pkgs.ghostty}/bin/ghostty --font-size=14 -e btop'"; }; network = { format-wifi = " {signalStrength}%"; -- 2.54.0 From fae5c9bf47e8eede044c791bd50e8e21c3c40718 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 19:48:27 -0700 Subject: [PATCH 20/27] feat (natalie): add nice functions to support awakened poe trade in wayland --- users/natalie/home/hyprland/windowrules.nix | 17 +++++++ .../home/scripts/scripts/fakefullscreen.sh | 44 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 users/natalie/home/scripts/scripts/fakefullscreen.sh diff --git a/users/natalie/home/hyprland/windowrules.nix b/users/natalie/home/hyprland/windowrules.nix index e4d0cc88f5857cb7f72017a82433b098967ff079..af902649c34e4b12ce1e92a0e039583334384f22 100644 --- a/users/natalie/home/hyprland/windowrules.nix +++ b/users/natalie/home/hyprland/windowrules.nix @@ -8,6 +8,23 @@ "pin,class:^(waypaper)$" "float,title:^(Volume Control)$" + #awakened-poe-trade + # https://github.com/SnosMe/awakened-poe-trade/issues/1137#issuecomment-2992606569 + "tag +apt, class:^(awakened-poe-trade)$" + "float, tag:apt" + "noblur, tag:apt" + "nofocus, tag:apt" + "noshadow, tag:apt" + "noborder, tag:apt" + "pin, tag:apt" + "renderunfocused, tag:apt" + "size 100% 100%, tag:apt" + "center, tag:apt" + "fullscreen, class:^(steam_app_238960)$" + # https://github.com/SnosMe/awakened-poe-trade/issues/1137#issuecomment-3037816727 + "tag +fakefullscreen, title:(Path of Exile),class:(steam_app_238960)" + "tile, tag:fakefullscreen" + "noborder, tag:fakefullscreen" # "float,title:^(Firefox — Sharing Indicator)$" # "move 0 0,title:^(Firefox — Sharing Indicator)$" # "size 700 450,title:^(Volume Control)$" diff --git a/users/natalie/home/scripts/scripts/fakefullscreen.sh b/users/natalie/home/scripts/scripts/fakefullscreen.sh new file mode 100644 index 0000000000000000000000000000000000000000..3b206da04e6dc35a114f0c3c36ae0b273fb9ac92 --- /dev/null +++ b/users/natalie/home/scripts/scripts/fakefullscreen.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p bash socat jq killall +# shellcheck disable=all + +RUNDIR=/run/user/$EUID/hypr +WAYBAR_FILE=$RUNDIR/.waybar_is_hidden + +function hide { + if [ ! -f $WAYBAR_FILE ]; then + hyprctl keyword workspace , gapsout:0 >/dev/null 2>&1 + killall -SIGUSR1 .waybar-wrapped && touch $WAYBAR_FILE + fi +} + +function show { + if [ -f $WAYBAR_FILE ]; then + hyprctl keyword workspace , gapsout:$(hyprctl getoption general:gaps_out -j | jq -r .custom | tr \ ,) >/dev/null 2>&1 + killall -SIGUSR1 .waybar-wrapped && rm $WAYBAR_FILE >/dev/null 2>&1 + fi +} + +function fakefullscreen() { + local fullscreenclients=$(hyprctl clients -j | jq -r '.[] | select(.tags | contains(["fakefullscreen"])).workspace.id') + [ -z "$fullscreenclients" -a ! -f $WAYBAR_FILE ] && return + local active=$(hyprctl activeworkspace -j | jq -r .id) + for id in $fullscreenclients; do + if [ $active -eq $id -a $(hyprctl clients -j | jq -r "[.[] | select(.workspace.id == $id) | select(.floating | not)] | length") -eq 1 ]; then + hide + return + fi + done + show +} + +sleep 1 +fakefullscreen + +socat -u "UNIX-CONNECT:$RUNDIR/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" STDOUT | while read -r event; do + case $event in + workspace\>\>* | openwindow\>\>* | closewindow\>\>*) fakefullscreen ;; + esac +done + +show -- 2.54.0 From b837012096e559b22b4566bfae9eb7ea4f5f624c Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Thu, 30 Oct 2025 19:55:51 -0700 Subject: [PATCH 21/27] feat: package awakened poe trade --- flake.nix | 1 + packages/awakened_poe_trade/default.nix | 35 +++++++++++++++++++++++++ users/natalie/desktop/home.nix | 1 + 3 files changed, 37 insertions(+) create mode 100644 packages/awakened_poe_trade/default.nix diff --git a/flake.nix b/flake.nix index 3e5fe6f5b088a4e03b8dbf35143fafff2b202f8c..ffbf73ebbc250227200823d2e60c2cc4139855db 100644 --- a/flake.nix +++ b/flake.nix @@ -79,6 +79,7 @@ (_: pkgs: { autofmt = pkgs.callPackage ./packages/autofmt { }; exiled_exchange_2 = pkgs.callPackage ./packages/exiled_exchange_2 { }; + awakened_poe_trade = pkgs.callPackage ./packages/awakened_poe_trade { }; }) ]; diff --git a/packages/awakened_poe_trade/default.nix b/packages/awakened_poe_trade/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..d72e45fdf84352955938190fe3a0b9d586eaa259 --- /dev/null +++ b/packages/awakened_poe_trade/default.nix @@ -0,0 +1,35 @@ +{ pkgs, lib, ... }: + +let + pname = "awakened-poe-trade"; + version = "3.26.102"; + name = "${pname}-${version}"; + + src = pkgs.fetchurl { + url = "https://github.com/SnosMe/awakened-poe-trade/releases/download/v${version}/Awakened-PoE-Trade-${version}.AppImage"; + sha256 = "sha256-kWMRZvAZKzGFXX7QJJN7eIs88ZDGWU8sMuyQhLgPQCY= +"; + }; + + appimageContents = pkgs.appimageTools.extract { inherit pname version src; }; +in +pkgs.appimageTools.wrapType2 rec { + inherit pname version src; + + extraInstallCommands = '' + install -m 444 -D ${appimageContents}/awakened-poe-trade.desktop $out/share/applications/${pname}.desktop + + install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png + + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname} %U' + ''; + + meta = with lib; { + description = "Awakened-PoE-Trade"; + homepage = "https://github.com/SnosMe/awakened-poe-trade"; + license = licenses.mit; + maintainers = [ ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/users/natalie/desktop/home.nix b/users/natalie/desktop/home.nix index e17c10d1460c1bac738c2dd9106297fe75a65a0f..481d44c0c565f972e3e980f577d26896369fa481 100644 --- a/users/natalie/desktop/home.nix +++ b/users/natalie/desktop/home.nix @@ -34,6 +34,7 @@ nexusmods-app-unfree protontricks (pkgs.callPackage ../../../packages/exiled_exchange_2 { }) + awakened_poe_trade #window manager stuff wofi -- 2.54.0 From baf1147d4ce5922bc3f2b21407b7b5f1791897e1 Mon Sep 17 00:00:00 2001 From: clover caruso Date: Sat, 4 Oct 2025 20:55:46 -0700 Subject: [PATCH 22/27] feat: add git and jujutsu signing --- modules/home/default.nix | 6 +++--- users/clover/home.nix | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/home/default.nix b/modules/home/default.nix index 7b6907b82e2bf2c8bf29407d31020aaac2e35a36..47c4241fcd70ab39abd2862cc25b8e2250291f66 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -141,10 +141,10 @@ in email = config.programs.git.userEmail; name = config.programs.git.userName; }; - signing = { + signing = lib.mkIf (config.programs.git.signing.key != null) { + inherit (config.programs.git.signing) key; + backend = "gpg"; behavior = "own"; - backend = "ssh"; - key = "~/.ssh/id_ed25519.pub"; }; git = { sign-on-push = true; diff --git a/users/clover/home.nix b/users/clover/home.nix index 5fb0d3e278fe30910d702ec5e12ed553fc1461e3..72bcfaec101f041eb4446cb5874a40c9ea3ff74b 100644 --- a/users/clover/home.nix +++ b/users/clover/home.nix @@ -14,7 +14,8 @@ in ripgrep uv nh - pkgs.autofmt + autofmt + gnupg ]; # packages to install for desktop environments (non-server) desktop = [ @@ -101,6 +102,10 @@ in # use a git-specific email git.userEmail = "git@paperclover.net"; + git.signing = { + signByDefault = true; + key = "C0D577FD799F9D11"; + }; jujutsu = { enable = true; @@ -286,13 +291,14 @@ in ) ''; }; + }; }; ssh = { enable = true; extraConfig = '' - SetEnv TERM=xterm-color + SetEnv TERM=xterm-256color ''; matchBlocks = rec { zenith = { -- 2.54.0 From 8b9ce2885e940f5e7cb855009ece92e6dc9f323a Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Sun, 7 Dec 2025 03:18:58 -0800 Subject: [PATCH 23/27] feat:natalie various hyprland fixes --- modules/home/default.nix | 10 +++++----- users/natalie/desktop/home.nix | 1 + users/natalie/home/hyprland/binds.nix | 6 +++++- users/natalie/home/hyprland/monitors.nix | 4 ++-- users/natalie/home/hyprland/windowrules.nix | 13 +++++++++---- users/natalie/home/waybar/settings.nix | 1 + 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/modules/home/default.nix b/modules/home/default.nix index 7b6907b82e2bf2c8bf29407d31020aaac2e35a36..e1a4bf81367ab94c08da38e09c9349991cfa5210 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -35,12 +35,12 @@ in sdk: with sdk; [ - build-tools-35-0-0 + build-tools-36-0-0 cmdline-tools-latest emulator platform-tools - platforms-android-35 - sources-android-35 + platforms-android-36 + sources-android-36 ndk-27-1-12297006 cmake-3-22-1 ] @@ -49,8 +49,8 @@ in system-images-android-35-google-apis-playstore-arm64-v8a ] ++ lib.optionals host.linux [ - system-images-android-35-google-apis-x86-64 - system-images-android-35-google-apis-playstore-x86-64 + system-images-android-36-google-apis-x86-64 + system-images-android-36-google-apis-playstore-x86-64 ]; }; xdg = { diff --git a/users/natalie/desktop/home.nix b/users/natalie/desktop/home.nix index 481d44c0c565f972e3e980f577d26896369fa481..65b4bcabdea99e9732feabd3f5c32a821af45c97 100644 --- a/users/natalie/desktop/home.nix +++ b/users/natalie/desktop/home.nix @@ -35,6 +35,7 @@ protontricks (pkgs.callPackage ../../../packages/exiled_exchange_2 { }) awakened_poe_trade + fuse-overlayfs #window manager stuff wofi diff --git a/users/natalie/home/hyprland/binds.nix b/users/natalie/home/hyprland/binds.nix index f0e655c8cfccc4a8977caf9a6edfeebe4f142053..139396467a12283c9eac0839dfed3080b3712384 100644 --- a/users/natalie/home/hyprland/binds.nix +++ b/users/natalie/home/hyprland/binds.nix @@ -15,7 +15,7 @@ "$mainMod, C, killactive," "$mainMod, M, exit, " "$mainMod, E, exec, $fileManager" - "$mainMod, V, togglefloating," + "$mainMod, F, togglefloating," "$mainMod, R, exec, $menu " "$mainMod, J, togglesplit " "$mainMod, Space, exec, vicinae vicinae://toggle" @@ -136,6 +136,10 @@ # clipboard manager "$mainMod, V, exec, vicinae vicinae://extensions/vicinae/clipboard/history" + #awakened-poe-trade + # "SHIFT,Space,pass,class:^(awakened-poe-trade)$" + # "CTRL,D,pass,class:^(awakened-poe-trade)$" + # "CTRL ALT,D,pass,class:^(awakened-poe-trade)$" ]; bindel = [ diff --git a/users/natalie/home/hyprland/monitors.nix b/users/natalie/home/hyprland/monitors.nix index 1bcaa833b63f4725cab0b124918ea3c64a910156..9147d7d2fe89b0c3cc21c2c96096b44ac07e2076 100644 --- a/users/natalie/home/hyprland/monitors.nix +++ b/users/natalie/home/hyprland/monitors.nix @@ -2,8 +2,8 @@ { wayland.windowManager.hyprland = { settings.monitor = [ - "HDMI-A-2, 1980x1080@144, 0x0, auto" - "DP-2,2560x1440@144,auto,auto" + "desc:Dell Inc. S2719DGF 1LCYBY2,2560x1440@154.85,1920x0,1.0" + "desc:Ancor Communications Inc VN279 HALMQS156672,1920x1080@60.0,0x0,1.0" ]; # extraConfig = '' diff --git a/users/natalie/home/hyprland/windowrules.nix b/users/natalie/home/hyprland/windowrules.nix index af902649c34e4b12ce1e92a0e039583334384f22..9c9a2d248838f16e84f98e73bcf82c86dd046d94 100644 --- a/users/natalie/home/hyprland/windowrules.nix +++ b/users/natalie/home/hyprland/windowrules.nix @@ -11,6 +11,7 @@ #awakened-poe-trade # https://github.com/SnosMe/awakened-poe-trade/issues/1137#issuecomment-2992606569 "tag +apt, class:^(awakened-poe-trade)$" + "tag +apt, title:(Awakened PoE Trade)" "float, tag:apt" "noblur, tag:apt" "nofocus, tag:apt" @@ -20,11 +21,15 @@ "renderunfocused, tag:apt" "size 100% 100%, tag:apt" "center, tag:apt" - "fullscreen, class:^(steam_app_238960)$" + + #POE + "tag +poe, title:(Path of Exile)" + "tag +poe class:(steam_app_238960)" + "fullscreen, tag:poe$" # https://github.com/SnosMe/awakened-poe-trade/issues/1137#issuecomment-3037816727 - "tag +fakefullscreen, title:(Path of Exile),class:(steam_app_238960)" - "tile, tag:fakefullscreen" - "noborder, tag:fakefullscreen" + # "tag +fakefullscreen, title:(Path of Exile),class:(steam_app_238960)" + # "tile, tag:fakefullscreen" + # "noborder, tag:fakefullscreen" # "float,title:^(Firefox — Sharing Indicator)$" # "move 0 0,title:^(Firefox — Sharing Indicator)$" # "size 700 450,title:^(Volume Control)$" diff --git a/users/natalie/home/waybar/settings.nix b/users/natalie/home/waybar/settings.nix index 266ce1a50c0c94a22d2bb63560c565faafb745fd..1a883448d70aaff7517c8e629760bab53e4ae430 100644 --- a/users/natalie/home/waybar/settings.nix +++ b/users/natalie/home/waybar/settings.nix @@ -27,6 +27,7 @@ in { programs.waybar.settings.mainBar = with custom; { position = "top"; + layer = "bottom"; height = 28; margin-top = 0; margin-bottom = 0; -- 2.54.0 From f36770dc30f728e971948dee2012044d73740996 Mon Sep 17 00:00:00 2001 From: Natalie Marks Date: Sun, 7 Dec 2025 03:20:54 -0800 Subject: [PATCH 24/27] chore: update flake --- flake.lock | 402 +++++++++++++++++++++++++++++------------------------ 1 file changed, 222 insertions(+), 180 deletions(-) diff --git a/flake.lock b/flake.lock index 7425b940de5d0d9f1293d270f436e0e8fc2d5f7f..5a4b7f887b3e7d6b2bf939e0c4949f441c3cd629 100644 --- a/flake.lock +++ b/flake.lock @@ -9,11 +9,11 @@ ] }, "locked": { - "lastModified": 1761337279, - "narHash": "sha256-xgiGLC5DKRzhtfPRYmePcmQExzLyg2eSYtsoY8BBXbo=", + "lastModified": 1764707074, + "narHash": "sha256-XONQ/zRv36w1Cyx+YBPStg+o8xH5J5Kqg0olLWs0O4M=", "owner": "tadfisher", "repo": "android-nixpkgs", - "rev": "40960a51479c87cdbb3801ed3d27e751700eaf55", + "rev": "f9c31127b45e3955a22c0d76b2d15e239b645879", "type": "github" }, "original": { @@ -71,11 +71,11 @@ ] }, "locked": { - "lastModified": 1760101617, - "narHash": "sha256-8jf/3ZCi+B7zYpIyV04+3wm72BD7Z801IlOzsOACR7I=", + "lastModified": 1764714051, + "narHash": "sha256-AjcMlM3UoavFoLzr0YrcvsIxALShjyvwe+o7ikibpCM=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "1826a9923881320306231b1c2090379ebf9fa4f8", + "rev": "a43bedcceced5c21ad36578ed823e6099af78214", "type": "github" }, "original": { @@ -91,11 +91,11 @@ ] }, "locked": { - "lastModified": 1761339987, - "narHash": "sha256-IUaawVwItZKi64IA6kF6wQCLCzpXbk2R46dHn8sHkig=", + "lastModified": 1765065051, + "narHash": "sha256-b7W9WsvyMOkUScNxbzS45KEJp0iiqRPyJ1I3JBE+oEE=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "7cd9aac79ee2924a85c211d21fafd394b06a38de", + "rev": "7e22bf538aa3e0937effcb1cee73d5f1bcc26f79", "type": "github" }, "original": { @@ -113,11 +113,11 @@ ] }, "locked": { - "lastModified": 1741473158, - "narHash": "sha256-kWNaq6wQUbUMlPgw8Y+9/9wP0F8SHkjy24/mN3UAppg=", + "lastModified": 1764011051, + "narHash": "sha256-M7SZyPZiqZUR/EiiBJnmyUbOi5oE/03tCeFrTiUZchI=", "owner": "numtide", "repo": "devshell", - "rev": "7c9e793ebe66bcba8292989a68c0419b737a22a0", + "rev": "17ed8d9744ebe70424659b0ef74ad6d41fc87071", "type": "github" }, "original": { @@ -129,11 +129,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "type": "github" }, "original": { @@ -198,11 +198,11 @@ ] }, "locked": { - "lastModified": 1759362264, - "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", + "lastModified": 1760948891, + "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", + "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04", "type": "github" }, "original": { @@ -248,24 +248,6 @@ } }, "flake-utils_3": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { "inputs": { "systems": "systems_6" }, @@ -283,7 +265,7 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_4": { "inputs": { "systems": "systems_7" }, @@ -301,7 +283,7 @@ "type": "github" } }, - "flake-utils_6": { + "flake-utils_5": { "inputs": { "systems": "systems_8" }, @@ -344,11 +326,11 @@ "gitignore_2": { "flake": false, "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "lastModified": 1762808025, + "narHash": "sha256-XmjITeZNMTQXGhhww6ed/Wacy2KzD6svioyCX7pkUu4=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c", "type": "github" }, "original": { @@ -385,11 +367,11 @@ ] }, "locked": { - "lastModified": 1761344779, - "narHash": "sha256-6LNSptFYhiAd0M/maJoixJw7V0Kp5BSoMRtIahcfu3M=", + "lastModified": 1764998300, + "narHash": "sha256-fZatn/KLfHLDXnF0wy7JxXqGaZmGDTVufT4o/AOlj44=", "owner": "nix-community", "repo": "home-manager", - "rev": "c644cb018f9fdec55f5ac2afb4713a8c7beb757c", + "rev": "27a6182347ccae90a88231ae0dc5dfa7d15815bb", "type": "github" }, "original": { @@ -444,11 +426,11 @@ ] }, "locked": { - "lastModified": 1760445448, - "narHash": "sha256-fXGjL6dw31FPFRrmIemzGiNSlfvEJTJNsmadZi+qNhI=", + "lastModified": 1763733840, + "narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "50fb9f069219f338a11cf0bcccb9e58357d67757", + "rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a", "type": "github" }, "original": { @@ -462,22 +444,23 @@ "aquamarine": "aquamarine", "hyprcursor": "hyprcursor", "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", "hyprland-protocols": "hyprland-protocols", - "hyprland-qtutils": "hyprland-qtutils", "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", + "hyprwire": "hyprwire", "nixpkgs": "nixpkgs", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems_2", "xdph": "xdph" }, "locked": { - "lastModified": 1761780088, - "narHash": "sha256-ylKrWQeIAGyysfHbgZpcWUs9UsbiOBIVXTPqaiV3lf0=", + "lastModified": 1765104552, + "narHash": "sha256-oaYLaXFEOHrS67UBWUcG8S8lFNTmLo65x8CmT++iLug=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "6ade4d58cab67e18aa758ef664e36421cab4d8b2", + "rev": "76ac655c9e624069cf17f470773e37d8172ee290", "type": "github" }, "original": { @@ -486,6 +469,52 @@ "type": "github" } }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1764812575, + "narHash": "sha256-1bK1yGgaR82vajUrt6z+BSljQvFn91D74WJ/vJsydtE=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "fd321368a40c782cfa299991e5584ca338e36ebe", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, "hyprland-protocols": { "inputs": { "nixpkgs": [ @@ -511,74 +540,6 @@ "type": "github" } }, - "hyprland-qt-support": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprland-qtutils", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "hyprland-qtutils", - "nixpkgs" - ], - "systems": [ - "hyprland", - "hyprland-qtutils", - "systems" - ] - }, - "locked": { - "lastModified": 1749154592, - "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "type": "github" - } - }, - "hyprland-qtutils": { - "inputs": { - "hyprland-qt-support": "hyprland-qt-support", - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hyprland", - "hyprland-qtutils", - "hyprlang", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1759080228, - "narHash": "sha256-RgDoAja0T1hnF0pTc56xPfLfFOO8Utol2iITwYbUhTk=", - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "rev": "629b15c19fa4082e4ce6be09fdb89e8c3312aed7", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "type": "github" - } - }, "hyprlang": { "inputs": { "hyprutils": [ @@ -595,11 +556,11 @@ ] }, "locked": { - "lastModified": 1758927902, - "narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=", + "lastModified": 1764612430, + "narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da", + "rev": "0d00dc118981531aa731150b6ea551ef037acddd", "type": "github" }, "original": { @@ -608,6 +569,58 @@ "type": "github" } }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1764592794, + "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, "hyprutils": { "inputs": { "nixpkgs": [ @@ -620,11 +633,11 @@ ] }, "locked": { - "lastModified": 1759619523, - "narHash": "sha256-r1ed7AR2ZEb2U8gy321/Xcp1ho2tzn+gG1te/Wxsj1A=", + "lastModified": 1764962281, + "narHash": "sha256-rGbEMhTTyTzw4iyz45lch5kXseqnqcEpmrHdy+zHsfo=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "3df7bde01efb3a3e8e678d1155f2aa3f19e177ef", + "rev": "fe686486ac867a1a24f99c753bb40ffed338e4b0", "type": "github" }, "original": { @@ -645,11 +658,11 @@ ] }, "locked": { - "lastModified": 1755184602, - "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", + "lastModified": 1763640274, + "narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", + "rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", "type": "github" }, "original": { @@ -658,6 +671,35 @@ "type": "github" } }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1764872015, + "narHash": "sha256-INI9AVrQG5nJZFvGPSiUZ9FEUZJLfGdsqjF1QSak7Gc=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "7997451dcaab7b9d9d442f18985d514ec5891608", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, "langref": { "flake": false, "locked": { @@ -692,11 +734,11 @@ ] }, "locked": { - "lastModified": 1761246178, - "narHash": "sha256-lQpl6ecQfQ7KzEIytH3k4hLtvq+KkTL+3IR2ZukdZWM=", + "lastModified": 1764208378, + "narHash": "sha256-Qur5AWl4Vx+It65DX+I+sc4lViz52OmXqvg+fL2t9I4=", "owner": "moonlight-mod", "repo": "moonlight", - "rev": "0b927a86a447a145f20bb5ee43fac79a724640f2", + "rev": "059476af87f7335c05424b805833864d6d9ed0e3", "type": "github" }, "original": { @@ -727,11 +769,11 @@ ] }, "locked": { - "lastModified": 1760846226, - "narHash": "sha256-xmU8kAsRprJiTGBTaGrwmjBP3AMA9ltlrxHKFuy5JWc=", + "lastModified": 1765080594, + "narHash": "sha256-5t3d655GqLblE+p5xN5ntkeRfZBesN7vehOWcRcU88M=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "5024e1901239a76b7bf94a4cd27f3507e639d49e", + "rev": "4194c582d0a3f440382ee00b729ea5cc5ef59754", "type": "github" }, "original": { @@ -747,11 +789,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1756245499, - "narHash": "sha256-clSqrE7JPhjGvnPqxLjN8AeadXQUFIGyakQyAywc1BY=", + "lastModified": 1764771319, + "narHash": "sha256-SllXl+Void1CIMk2jkKJXp7PL/31JeWir/Q8GAsuvEM=", "owner": "madsbv", "repo": "nix-options-search", - "rev": "37cb7d89d8965b53db71b3548c3224612b22c1a1", + "rev": "cccbb97d813c462bd85012740bc1c02c9c267808", "type": "github" }, "original": { @@ -762,11 +804,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761114652, - "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", + "lastModified": 1764950072, + "narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", + "rev": "f61125a668a320878494449750330ca58b78c557", "type": "github" }, "original": { @@ -778,11 +820,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1736012469, - "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", + "lastModified": 1762977756, + "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", + "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", "type": "github" }, "original": { @@ -794,11 +836,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1761236834, - "narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=", + "lastModified": 1764947035, + "narHash": "sha256-EYHSjVM4Ox4lvCXUMiKKs2vETUSL5mx+J2FfutM7T9w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1", + "rev": "a672be65651c80d3f592a89b3945466584a22069", "type": "github" }, "original": { @@ -809,15 +851,15 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1759036355, - "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", - "owner": "nixos", + "lastModified": 1762111121, + "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -866,11 +908,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1761238604, - "narHash": "sha256-xZ8SGSSndcvjZLUrMLrz4DjnPFtjZfSGZzEHPGnS2Eg=", + "lastModified": 1764871278, + "narHash": "sha256-ezKJwZeAtZSO9EA3aLl5bmjjAVUoLE69IC+yX/KSqDM=", "owner": "notashelf", "repo": "nvf", - "rev": "dad8ece966760d5de956ffa69670ffce1a90f3e3", + "rev": "43b48909a3d0c96f5c3d9a9e50d6faabbeccc9dd", "type": "github" }, "original": { @@ -902,11 +944,11 @@ ] }, "locked": { - "lastModified": 1760663237, - "narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=", + "lastModified": 1765016596, + "narHash": "sha256-rhSqPNxDVow7OQKi4qS5H8Au0P4S3AYbawBSmJNUtBQ=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37", + "rev": "548fc44fca28a5e81c5d6b846e555e6b9c2a5a3c", "type": "github" }, "original": { @@ -942,11 +984,11 @@ ] }, "locked": { - "lastModified": 1761273263, - "narHash": "sha256-6d6ojnu6A6sVxIjig8OL6E1T8Ge9st3YGgVwg5MOY+Q=", + "lastModified": 1765075567, + "narHash": "sha256-KFDCdQcHJ0hE3Nt5Gm5enRIhmtEifAjpxgUQ3mzSJpA=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "28405834d4fdd458d28e123fae4db148daecec6f", + "rev": "769156779b41e8787a46ca3d7d76443aaf68be6f", "type": "github" }, "original": { @@ -1047,11 +1089,11 @@ "nix-filter": "nix-filter" }, "locked": { - "lastModified": 1759855608, - "narHash": "sha256-DO6OaOY8G4HFP7Rz6gRCG6K2PZ8NrXkDIF6NJGRVcbs=", + "lastModified": 1764873455, + "narHash": "sha256-ehm3Y0xCUkJnbDwM0wwu9DBj7f3lLTwFW9GBxH93w2s=", "owner": "Duckonaut", "repo": "split-monitor-workspaces", - "rev": "10719e725ade06da410db52268f4b9cf8ea5f63c", + "rev": "34d1ce459b4f13e77d8f2a0851475497abee2c98", "type": "github" }, "original": { @@ -1182,15 +1224,15 @@ }, "vicinae": { "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_4", + "systems": "systems_5" }, "locked": { - "lastModified": 1761759538, - "narHash": "sha256-HUN2lrtbOX1MMCVzl3yBsMDyyoXqvQS7QFs9gJWUyaw=", + "lastModified": 1764939234, + "narHash": "sha256-o/0emFrTtNzfxQis6U1onAJMR63APCigiZNmqLxVM1E=", "owner": "vicinaehq", "repo": "vicinae", - "rev": "278206de88db4d336b2759582b842453bf4b3f2d", + "rev": "d50101fc04c76a9acc3785da5459f6884fc6984b", "type": "github" }, "original": { @@ -1227,11 +1269,11 @@ ] }, "locked": { - "lastModified": 1760713634, - "narHash": "sha256-5HXelmz2x/uO26lvW7MudnadbAfoBnve4tRBiDVLtOM=", + "lastModified": 1761431178, + "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "753bbbdf6a052994da94062e5b753288cef28dfb", + "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", "type": "github" }, "original": { @@ -1247,11 +1289,11 @@ ] }, "locked": { - "lastModified": 1761278750, - "narHash": "sha256-H00vsbCQRRutJ6sg7Pijy+pPY0+mafnTWw1MZXdVbh8=", + "lastModified": 1764648680, + "narHash": "sha256-B/nmawJ75/951Xs9ludSxDVd/txFY+odmcbinySqMQo=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "1689281237cb389759a005c41545302a54ec8100", + "rev": "897df2f2ad4880563ce801fa29f348a4e98f0a20", "type": "github" }, "original": { @@ -1263,15 +1305,15 @@ "zig": { "inputs": { "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_3", "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1760747435, - "narHash": "sha256-wNB/W3x+or4mdNxFPNOH5/WFckNpKgFRZk7OnOsLtm0=", + "lastModified": 1764203689, + "narHash": "sha256-ivb0SqCptyIxx5g8ryRrUL0xrJhLrJPlvZbZjxVaui0=", "owner": "mitchellh", "repo": "zig-overlay", - "rev": "d0f239b887b1ac736c0f3dde91bf5bf2ecf3a420", + "rev": "8f7347545dea59b75e40247cc1ed55a42f64dbbf", "type": "github" }, "original": { @@ -1283,7 +1325,7 @@ "zig-overlay": { "inputs": { "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_5", "nixpkgs": [ "zls", "nixpkgs" @@ -1305,7 +1347,7 @@ }, "zls": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_4", "gitignore": "gitignore_3", "langref": "langref", "nixpkgs": "nixpkgs_6", -- 2.54.0 From 805848d13e1e4a69204c90497033d2edac055443 Mon Sep 17 00:00:00 2001 From: clover caruso Date: Fri, 12 Dec 2025 18:20:00 -0800 Subject: [PATCH 25/27] clover: at work --- modules/home/default.nix | 9 ++++-- users/clover/home.nix | 63 ++++++++++++++++++++++++++++++++------ users/clover/work/home.nix | 1 + 3 files changed, 60 insertions(+), 13 deletions(-) diff --git a/modules/home/default.nix b/modules/home/default.nix index 6e9a26196dcdf34958881eb89a2316560317139d..9b0a348c969264f35c546f9528386fba2a600f38 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -144,11 +144,14 @@ in signing = lib.mkIf (config.programs.git.signing.key != null) { inherit (config.programs.git.signing) key; backend = "gpg"; - behavior = "own"; + # signatures are slow, compute them on push instead of on change. + behavior = "drop"; }; git = { - sign-on-push = true; - push-new-bookmarks = true; + sign-on-push = config.programs.git.signing.key != null; + }; + remotes.origin = { + auto-track-bookmarks = "glob:*"; }; ui = { default-command = "log"; diff --git a/users/clover/home.nix b/users/clover/home.nix index 72bcfaec101f041eb4446cb5874a40c9ea3ff74b..39e5db31eb601046124b1fdc6db20717a108aa51 100644 --- a/users/clover/home.nix +++ b/users/clover/home.nix @@ -1,4 +1,9 @@ -{ pkgs, host, ... }: +{ + pkgs, + host, + lib, + ... +}: let hostServer = false; in @@ -66,8 +71,7 @@ in jf = "jj git fetch"; e = "jj edit"; d = "jj desc"; - bup = "jj b m --from 'parents(@)' --to '@'"; - push = "jj git push"; + bup = "jj b m --from 'heads(::@- & bookmarks())' --to '@'"; moveself = "jj rebase -r @ -d"; logall = "jj log -r 'all()'"; cherry = "jj git fetch && jj split -i -p -m 'SPLIT_CHANGES' && jj edit -r 'description(\"SPLIT_CHANGES\")' && jj desc -m '' --edit"; @@ -83,19 +87,58 @@ in uv run --project "$dirname" "$@" } + function bun() { + if [[ "$1" = "build" ]]; then + command bun run "$@" + elif [[ "$1" = "bundle" ]]; then + shift + command bun build "$@" + else + command bun "$@" + fi + } + + function jj() { + if [[ "$*" = "git push"* ]] && [[ "$*" != *"--dry-run"* ]]; then + command jj "$@" --dry-run + printf "Press any key to continue... " + read -r + command jj "$@" + else + command jj "$@" + fi + } + + function push() { + command jj git push "$@" --dry-run + printf "Press any key to continue... " + read -r + if bash -c 'cd $(jj workspace root); bun local-ci'; then + command jj git push "$@" + fi + } + function pr() { message=$(jj log -r '@' -T 'description' --no-graph) if [[ -z "$message" ]] || [[ "$message" = "WIP:"* ]]; then jj desc + message=$(jj log -r '@' -T 'description' --no-graph) + if [[ -z "$message" ]] || [[ "$message" = "WIP:"* ]]; then + exit + fi fi if [ -n "$1" ]; then - jj git push --named "clo/$1"=@ - branch="clo/$1" + if [[ "clo"/* = "$1" ]]; then + branch="$1"; + else + branch="clo/$1" + fi + command jj git push --named "$branch"=@ else - branch="$(jj log -r '@' -T '"clo/push-" ++ change_id.short()' --no-graph)" - jj git push -c @ + command jj git push -c @ + branch="$(jj log -r '@-' -T 'bookmarks.join("\n")' --no-graph | head -1)" fi - open "$(git remote get-url origin | sed 's/git@github\.com:/https:\/\/github.com\//' | sed 's/\.git$//')/compare/master...$branch" + open "$(git remote get-url origin | sed 's/git@github\.com:/https:\/\/github.com\//' | sed 's/\.git$//')/compare/master...$branch?quick_pull=1&labels=awaiting+code+review,awaiting+functionality+review&body=" } ''; }; @@ -104,7 +147,7 @@ in git.userEmail = "git@paperclover.net"; git.signing = { signByDefault = true; - key = "C0D577FD799F9D11"; + key = lib.mkDefault "C0D577FD799F9D11"; }; jujutsu = { @@ -175,7 +218,7 @@ in }; # ui.graph.style = "square"; revsets = { - log = "ancestors(description(regex:\"^(WIP:|\\\\s+$)\"):: | working_copies() | bookmarks(\"master\")::remote_bookmarks(\"master\") | bookmarks(glob:\"clo/*\")::, 5)"; + log = "ancestors(description(regex:\"^(WIP:|\\\\s+$)\"):: | working_copies() | bookmarks(exact:\"master\")::remote_bookmarks(exact:\"master\") | bookmarks(glob:\"clo/*\")::, 5)"; short-prefixes = "(trunk()..@)::"; }; # templates.log = "hl_wip(self)"; diff --git a/users/clover/work/home.nix b/users/clover/work/home.nix index 3dcb3ea9c5e53de6b451d59bbcbb3d78a1cff0cf..63ec7800722bf7336ced60fcb9f0b40fd150051f 100644 --- a/users/clover/work/home.nix +++ b/users/clover/work/home.nix @@ -8,6 +8,7 @@ } ''; }; + programs.git.signing.key = "CE485807AE4068AF8508C8DC5CBB21841C7920AD"; home.packages = with pkgs; [ (bun.overrideAttrs (_: rec { version = "1.3.0"; -- 2.54.0 From 9687d552742d9dea6d65e2bb9efee9c31a03ff8f Mon Sep 17 00:00:00 2001 From: clover caruso Date: Sat, 24 Jan 2026 15:48:42 -0800 Subject: [PATCH 26/27] do a flake upgrade --- flake.lock | 187 +++++++++++++++++++++-------------- modules/home/default.nix | 10 +- modules/neovim/default.nix | 8 +- packages/autofmt/default.nix | 2 +- users/clover/home.nix | 128 ++---------------------- 5 files changed, 130 insertions(+), 205 deletions(-) diff --git a/flake.lock b/flake.lock index 5a4b7f887b3e7d6b2bf939e0c4949f441c3cd629..457bdacc7ef29a8a19b24ca5c434f5e3c6d43188 100644 --- a/flake.lock +++ b/flake.lock @@ -9,11 +9,11 @@ ] }, "locked": { - "lastModified": 1764707074, - "narHash": "sha256-XONQ/zRv36w1Cyx+YBPStg+o8xH5J5Kqg0olLWs0O4M=", + "lastModified": 1767990299, + "narHash": "sha256-Jz+cp9Ln4++1XiKw9KvZEM2dJ9AdOvayk97ybi9g7zc=", "owner": "tadfisher", "repo": "android-nixpkgs", - "rev": "f9c31127b45e3955a22c0d76b2d15e239b645879", + "rev": "449f2cadee7cb7b665aea209a67f8ecf30176653", "type": "github" }, "original": { @@ -71,11 +71,11 @@ ] }, "locked": { - "lastModified": 1764714051, - "narHash": "sha256-AjcMlM3UoavFoLzr0YrcvsIxALShjyvwe+o7ikibpCM=", + "lastModified": 1767024902, + "narHash": "sha256-sMdk6QkMDhIOnvULXKUM8WW8iyi551SWw2i6KQHbrrU=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "a43bedcceced5c21ad36578ed823e6099af78214", + "rev": "b8a0c5ba5a9fbd2c660be7dd98bdde0ff3798556", "type": "github" }, "original": { @@ -91,11 +91,11 @@ ] }, "locked": { - "lastModified": 1765065051, - "narHash": "sha256-b7W9WsvyMOkUScNxbzS45KEJp0iiqRPyJ1I3JBE+oEE=", + "lastModified": 1767718503, + "narHash": "sha256-V+VkFs0aSG0ca8p/N3gib7FAf4cq9jyr5Gm+ZBrHQpo=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "7e22bf538aa3e0937effcb1cee73d5f1bcc26f79", + "rev": "9f48ffaca1f44b3e590976b4da8666a9e86e6eb1", "type": "github" }, "original": { @@ -129,15 +129,15 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1761588595, - "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", - "owner": "edolstra", + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", "repo": "flake-compat", - "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "NixOS", "repo": "flake-compat", "type": "github" } @@ -367,11 +367,11 @@ ] }, "locked": { - "lastModified": 1764998300, - "narHash": "sha256-fZatn/KLfHLDXnF0wy7JxXqGaZmGDTVufT4o/AOlj44=", + "lastModified": 1768018810, + "narHash": "sha256-WREj1ZQ2wSGtyPAhQJ3SX/7PJ29PNKv04h/7NgqUS+M=", "owner": "nix-community", "repo": "home-manager", - "rev": "27a6182347ccae90a88231ae0dc5dfa7d15815bb", + "rev": "7c5d9345ad7cc38832cd4007f5cd03daad64d75b", "type": "github" }, "original": { @@ -426,11 +426,11 @@ ] }, "locked": { - "lastModified": 1763733840, - "narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=", + "lastModified": 1766946335, + "narHash": "sha256-MRD+Jr2bY11MzNDfenENhiK6pvN+nHygxdHoHbZ1HtE=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a", + "rev": "4af02a3925b454deb1c36603843da528b67ded6c", "type": "github" }, "original": { @@ -456,11 +456,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1765104552, - "narHash": "sha256-oaYLaXFEOHrS67UBWUcG8S8lFNTmLo65x8CmT++iLug=", + "lastModified": 1768000181, + "narHash": "sha256-/E66+tcVBnvJcOFL/CjnjBfKew6A2e+28EZrcRHioBw=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "76ac655c9e624069cf17f470773e37d8172ee290", + "rev": "81e7498ec27156ee97aabba6fe4993412d98d1ab", "type": "github" }, "original": { @@ -502,11 +502,11 @@ ] }, "locked": { - "lastModified": 1764812575, - "narHash": "sha256-1bK1yGgaR82vajUrt6z+BSljQvFn91D74WJ/vJsydtE=", + "lastModified": 1767023960, + "narHash": "sha256-R2HgtVS1G3KSIKAQ77aOZ+Q0HituOmPgXW9nBNkpp3Q=", "owner": "hyprwm", "repo": "hyprland-guiutils", - "rev": "fd321368a40c782cfa299991e5584ca338e36ebe", + "rev": "c2e906261142f5dd1ee0bfc44abba23e2754c660", "type": "github" }, "original": { @@ -527,11 +527,11 @@ ] }, "locked": { - "lastModified": 1759610243, - "narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=", + "lastModified": 1765214753, + "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622", + "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", "type": "github" }, "original": { @@ -633,11 +633,11 @@ ] }, "locked": { - "lastModified": 1764962281, - "narHash": "sha256-rGbEMhTTyTzw4iyz45lch5kXseqnqcEpmrHdy+zHsfo=", + "lastModified": 1766253372, + "narHash": "sha256-1+p4Kw8HdtMoFSmJtfdwjxM4bPxDK9yg27SlvUMpzWA=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "fe686486ac867a1a24f99c753bb40ffed338e4b0", + "rev": "51a4f93ce8572e7b12b7284eb9e6e8ebf16b4be9", "type": "github" }, "original": { @@ -687,11 +687,11 @@ ] }, "locked": { - "lastModified": 1764872015, - "narHash": "sha256-INI9AVrQG5nJZFvGPSiUZ9FEUZJLfGdsqjF1QSak7Gc=", + "lastModified": 1767473322, + "narHash": "sha256-RGOeG+wQHeJ6BKcsSB8r0ZU77g9mDvoQzoTKj2dFHwA=", "owner": "hyprwm", "repo": "hyprwire", - "rev": "7997451dcaab7b9d9d442f18985d514ec5891608", + "rev": "d5e7d6b49fe780353c1cf9a1cf39fa8970bd9d11", "type": "github" }, "original": { @@ -734,11 +734,11 @@ ] }, "locked": { - "lastModified": 1764208378, - "narHash": "sha256-Qur5AWl4Vx+It65DX+I+sc4lViz52OmXqvg+fL2t9I4=", + "lastModified": 1765916709, + "narHash": "sha256-qc4m7v8hGOMb9BVLuiQZAbgzHoKfVwEY7HUl9fsY/hE=", "owner": "moonlight-mod", "repo": "moonlight", - "rev": "059476af87f7335c05424b805833864d6d9ed0e3", + "rev": "d0ad754cf0b9c5a34d7f69595f407c8199f988ce", "type": "github" }, "original": { @@ -747,6 +747,24 @@ "type": "github" } }, + "ndg": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1765435293, + "narHash": "sha256-HRp4g6qBCb8vpJ17s2FacMRXRszM73uBiR56aILMELA=", + "owner": "feel-co", + "repo": "ndg", + "rev": "65bf834b332d5f8b28d95ea14c7974be7c272971", + "type": "github" + }, + "original": { + "owner": "feel-co", + "repo": "ndg", + "type": "github" + } + }, "nix-filter": { "locked": { "lastModified": 1693833173, @@ -769,11 +787,11 @@ ] }, "locked": { - "lastModified": 1765080594, - "narHash": "sha256-5t3d655GqLblE+p5xN5ntkeRfZBesN7vehOWcRcU88M=", + "lastModified": 1765267181, + "narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "4194c582d0a3f440382ee00b729ea5cc5ef59754", + "rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f", "type": "github" }, "original": { @@ -789,11 +807,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1764771319, - "narHash": "sha256-SllXl+Void1CIMk2jkKJXp7PL/31JeWir/Q8GAsuvEM=", + "lastModified": 1765642879, + "narHash": "sha256-LIKEZW++qgg8FSpJtAayv6yfIF3CO42GpryyeJ4pk7M=", "owner": "madsbv", "repo": "nix-options-search", - "rev": "cccbb97d813c462bd85012740bc1c02c9c267808", + "rev": "b91e3ad2b4f3afbf0ceadb140fb9a0d342733b2e", "type": "github" }, "original": { @@ -804,11 +822,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1764950072, - "narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=", + "lastModified": 1767379071, + "narHash": "sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf+Okucw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f61125a668a320878494449750330ca58b78c557", + "rev": "fb7944c166a3b630f177938e478f0378e64ce108", "type": "github" }, "original": { @@ -836,11 +854,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1764947035, - "narHash": "sha256-EYHSjVM4Ox4lvCXUMiKKs2vETUSL5mx+J2FfutM7T9w=", + "lastModified": 1767966113, + "narHash": "sha256-mSTsvXa4WveSRJexsmCbm9dY17B1fKp7NLpJxllpQw4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a672be65651c80d3f592a89b3945466584a22069", + "rev": "5f02c91314c8ba4afe83b256b023756412218535", "type": "github" }, "original": { @@ -850,6 +868,22 @@ } }, "nixpkgs_4": { + "locked": { + "lastModified": 1764242076, + "narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { "locked": { "lastModified": 1762111121, "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", @@ -865,7 +899,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1708161998, "narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=", @@ -881,7 +915,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_7": { "locked": { "lastModified": 1717696253, "narHash": "sha256-1+ua0ggXlYYPLTmMl3YeYYsBXDSCqT+Gw3u6l4gvMhA=", @@ -902,17 +936,18 @@ "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", "mnw": "mnw", + "ndg": "ndg", "nixpkgs": [ "nixpkgs" ], "systems": "systems_4" }, "locked": { - "lastModified": 1764871278, - "narHash": "sha256-ezKJwZeAtZSO9EA3aLl5bmjjAVUoLE69IC+yX/KSqDM=", + "lastModified": 1765537745, + "narHash": "sha256-EaFYxx2aSuM2xx+l+E55YNMCJOoQBl2tJybxyF0pPqw=", "owner": "notashelf", "repo": "nvf", - "rev": "43b48909a3d0c96f5c3d9a9e50d6faabbeccc9dd", + "rev": "8e031476d0d7f326b63c9c5522f840e2f8b724c0", "type": "github" }, "original": { @@ -944,11 +979,11 @@ ] }, "locked": { - "lastModified": 1765016596, - "narHash": "sha256-rhSqPNxDVow7OQKi4qS5H8Au0P4S3AYbawBSmJNUtBQ=", + "lastModified": 1767281941, + "narHash": "sha256-6MkqajPICgugsuZ92OMoQcgSHnD6sJHwk8AxvMcIgTE=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "548fc44fca28a5e81c5d6b846e555e6b9c2a5a3c", + "rev": "f0927703b7b1c8d97511c4116eb9b4ec6645a0fa", "type": "github" }, "original": { @@ -984,11 +1019,11 @@ ] }, "locked": { - "lastModified": 1765075567, - "narHash": "sha256-KFDCdQcHJ0hE3Nt5Gm5enRIhmtEifAjpxgUQ3mzSJpA=", + "lastModified": 1768012928, + "narHash": "sha256-HFFVQaux1JoOjEvgBT0ASk1Je+jsipyO5c91FoLMed8=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "769156779b41e8787a46ca3d7d76443aaf68be6f", + "rev": "312b4371e72f644ffcff25b23615195e3b390643", "type": "github" }, "original": { @@ -1089,11 +1124,11 @@ "nix-filter": "nix-filter" }, "locked": { - "lastModified": 1764873455, - "narHash": "sha256-ehm3Y0xCUkJnbDwM0wwu9DBj7f3lLTwFW9GBxH93w2s=", + "lastModified": 1767711026, + "narHash": "sha256-yTuyde8TpBR3NhNnOcK4uOGukvMCwrH3otP8E04e9X0=", "owner": "Duckonaut", "repo": "split-monitor-workspaces", - "rev": "34d1ce459b4f13e77d8f2a0851475497abee2c98", + "rev": "764548c3aa22c9f4cb436ec7243d21795eb6ebec", "type": "github" }, "original": { @@ -1224,15 +1259,15 @@ }, "vicinae": { "inputs": { - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "systems": "systems_5" }, "locked": { - "lastModified": 1764939234, - "narHash": "sha256-o/0emFrTtNzfxQis6U1onAJMR63APCigiZNmqLxVM1E=", + "lastModified": 1767958732, + "narHash": "sha256-Jy7Px8fWfZgRRWcv5d8XTddPDaHRJ1o4mG3yTlEkXTo=", "owner": "vicinaehq", "repo": "vicinae", - "rev": "d50101fc04c76a9acc3785da5459f6884fc6984b", + "rev": "c80929ea3f44d540a5063ad1262799aa32a7929c", "type": "github" }, "original": { @@ -1289,11 +1324,11 @@ ] }, "locked": { - "lastModified": 1764648680, - "narHash": "sha256-B/nmawJ75/951Xs9ludSxDVd/txFY+odmcbinySqMQo=", + "lastModified": 1767618227, + "narHash": "sha256-9+XVF47E9NCVs249SSsDtr7YdG/23/lCJmWAjQvOfqI=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "897df2f2ad4880563ce801fa29f348a4e98f0a20", + "rev": "1586e49b3908b058e221f11d843eb46392dba17b", "type": "github" }, "original": { @@ -1306,14 +1341,14 @@ "inputs": { "flake-compat": "flake-compat_3", "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1764203689, - "narHash": "sha256-ivb0SqCptyIxx5g8ryRrUL0xrJhLrJPlvZbZjxVaui0=", + "lastModified": 1767919086, + "narHash": "sha256-t9Z7r8yJDbRqoAhm7vsohHAhMGF373NCWt/XeHlZAWw=", "owner": "mitchellh", "repo": "zig-overlay", - "rev": "8f7347545dea59b75e40247cc1ed55a42f64dbbf", + "rev": "d7671671de8bd3afcabffefc77c75ed9777b249b", "type": "github" }, "original": { @@ -1350,7 +1385,7 @@ "flake-utils": "flake-utils_4", "gitignore": "gitignore_3", "langref": "langref", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_7", "zig-overlay": "zig-overlay" }, "locked": { diff --git a/modules/home/default.nix b/modules/home/default.nix index 9b0a348c969264f35c546f9528386fba2a600f38..61259dc7c98b1faf4950be94f82fd5776f4de9a6 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -69,8 +69,10 @@ in git = { enable = true; - userName = lib.mkDefault user.name; - userEmail = lib.mkDefault user.email; + settings.user = { + name = lib.mkDefault user.name; + email = lib.mkDefault user.email; + }; ignores = [ (lib.mkIf host.darwin ".DS_Store") # When using Finder (lib.mkIf host.darwin "._*") # When using non-APFS drives @@ -138,8 +140,8 @@ in jujutsu = { settings = { user = { - email = config.programs.git.userEmail; - name = config.programs.git.userName; + name = config.programs.git.settings.user.name; + email = config.programs.git.settings.user.email; }; signing = lib.mkIf (config.programs.git.signing.key != null) { inherit (config.programs.git.signing) key; diff --git a/modules/neovim/default.nix b/modules/neovim/default.nix index 6a31c91a848672da9814e0b6bd9e5c5ad48a29f8..e87139d7b90a9538b6e437893ef4fc1a4adca585 100644 --- a/modules/neovim/default.nix +++ b/modules/neovim/default.nix @@ -82,7 +82,7 @@ servers.nixd.init_options.autoArchive = true; }; treesitter = { - enable = true; + enable = false; addDefaultGrammars = true; # this is buggy and keybind.nix overwrites its keymaps anyways incrementalSelection.enable = false; @@ -99,7 +99,7 @@ }; languages = { enableFormat = true; - enableTreesitter = true; + enableTreesitter = false; enableExtraDiagnostics = true; # enable debug adapter protocol by default enableDAP = true; @@ -111,13 +111,13 @@ html.enable = true; nix.enable = true; python.enable = true; - rust.crates.enable = true; rust.enable = true; ts.enable = true; zig.enable = true; # sort-lines: off - nix.lsp.servers = "nixd"; + nix.lsp.servers = [ "nixd" ]; + rust.extensions.crates-nvim.enable = true; }; filetree.neo-tree = { enable = true; diff --git a/packages/autofmt/default.nix b/packages/autofmt/default.nix index fa006e3e7dc0b83bcc7ebb686daafe54b4925e08..45db7d83280d053850fcd1f77fc1a757e338ed38 100644 --- a/packages/autofmt/default.nix +++ b/packages/autofmt/default.nix @@ -6,7 +6,7 @@ pkgs.writeShellApplication { clang-tools deno dprint - nixfmt-rfc-style + nixfmt prettierd # autofmt only runs on a local build of prettier rustfmt zig diff --git a/users/clover/home.nix b/users/clover/home.nix index 39e5db31eb601046124b1fdc6db20717a108aa51..f48f27fa9434e915d801a530c837dd988107dd7c 100644 --- a/users/clover/home.nix +++ b/users/clover/home.nix @@ -1,7 +1,7 @@ { + config, pkgs, host, - lib, ... }: let @@ -64,6 +64,7 @@ in # zsh is the shell i use zsh = { enable = true; + dotDir = "${config.xdg.configHome}/zsh"; shellAliases = { switch = "~/config/switch"; @@ -144,10 +145,10 @@ in }; # use a git-specific email - git.userEmail = "git@paperclover.net"; - git.signing = { - signByDefault = true; - key = lib.mkDefault "C0D577FD799F9D11"; + git = { + settings.user.email = "git@paperclover.net"; + settings.gpg.format = "ssh"; + signing.signByDefault = true; }; jujutsu = { @@ -218,132 +219,19 @@ in }; # ui.graph.style = "square"; revsets = { - log = "ancestors(description(regex:\"^(WIP:|\\\\s+$)\"):: | working_copies() | bookmarks(exact:\"master\")::remote_bookmarks(exact:\"master\") | bookmarks(glob:\"clo/*\")::, 5)"; short-prefixes = "(trunk()..@)::"; }; - # templates.log = "hl_wip(self)"; - - template-aliases = { - # log template, highlighting the WIP commits by making everything else faded out - "hl_wip(commit)" = '' - if(commit.root(), format_root_commit(commit), - label("__commit__", - format_short_commit_header(commit) ++ "\n" ++ - format_commit_description(commit) - ) - ) - ''; - - "format_commit_description(commit)" = '' - label("desc", format_commit_firstline(commit.description().first_line())) ++ - "\n" ++ if( - commit.description().starts_with("WIP:") || commit.current_working_copy(), - commit.description().remove_prefix(commit.description().first_line()).remove_prefix("\n").trim_end() ++ "\n ", - if(commit.description().remove_prefix(commit.description().first_line()).trim().len() > 0, - label("muted", lines_collapsed(commit.description().lines().filter(|x| x.trim().len() > 0).len() - 1)), - " " - ) - ) - ''; - "lines_collapsed(count)" = - ''("[" ++ stringify(count ++ " line" ++ if(count == 1, "", "s")) ++ " collapsed]\n")''; - "format_commit_firstline(line)" = '' - if(line.starts_with("WIP:"), - label("cc_wip", " WIP ") ++ " " ++ format_commit_firstline_a_wip(line.remove_prefix("WIP:").trim()), - format_commit_firstline_a_wip(line) - ) - ''; - "format_commit_firstline_a_wip(line)" = '' - if(line.starts_with("feat:") || line.starts_with("feat("), - label("cc_feat", "feat") ++ format_commit_firstline_a_cc_type(line.remove_prefix("feat")), - if(line.starts_with("fix:") || line.starts_with("fix("), - label("cc_fix", "fix") ++ format_commit_firstline_a_cc_type(line.remove_prefix("fix")), - if(line.starts_with("hotfix:") || line.starts_with("hotfix("), - label("cc_hotfix", "hotfix") ++ format_commit_firstline_a_cc_type(line.remove_prefix("hotfix")), - if(line.starts_with("chore:") || line.starts_with("chore("), - label("cc_chore", "chore") ++ format_commit_firstline_a_cc_type(line.remove_prefix("chore")), - if(line.starts_with("test:") || line.starts_with("test("), - label("cc_other", "test") ++ format_commit_firstline_a_cc_type(line.remove_prefix("test")), - if(line.starts_with("refactor:") || line.starts_with("refactor("), - label("cc_other", "refactor") ++ format_commit_firstline_a_cc_type(line.remove_prefix("refactor")), - if(line.starts_with("perf:") || line.starts_with("perf("), - label("cc_other", "perf") ++ format_commit_firstline_a_cc_type(line.remove_prefix("perf")), - if(line.starts_with("lib:") || line.starts_with("lib("), - label("cc_other", "lib") ++ format_commit_firstline_a_cc_type(line.remove_prefix("lib")), - label("cc_header", line) - )))))))) - ''; - "format_commit_firstline_a_cc_type(rest)" = '' - if(rest.starts_with("(") && rest.contains(")"), - format_firstline_cc_scope(rest, index_of_close_paren(rest)), - format_firstline_a_cc(rest)) - ''; - "format_firstline_cc_scope(rest, index)" = '' - label("cc_scope", rest.substr(0, index)) ++ format_firstline_a_cc(rest.substr(index, rest.len())) - ''; - "format_firstline_a_cc(rest)" = '' - if(rest.starts_with(":"), - label("muted", ":") ++ label("cc_header", rest.remove_prefix(":")), - label("cc_header", rest) - ) - ''; - # sorry! - "index_of_close_paren(line)" = '' - stringify(if(line.substr(1, 2) == ")", "A", - if(line.substr(2, 3) == ")", "AA", - if(line.substr(3, 4) == ")", "AAA", - if(line.substr(4, 5) == ")", "AAAA", - if(line.substr(5, 6) == ")", "AAAAA", - if(line.substr(6, 7) == ")", "AAAAAA", - if(line.substr(7, 8) == ")", "AAAAAAA", - if(line.substr(8, 9) == ")", "AAAAAAAA", - if(line.substr(9, 10) == ")","AAAAAAAAA", - if(line.substr(10, 11) == ")", "AAAAAAAAAA", - if(line.substr(11, 12) == ")", "AAAAAAAAAAA", - if(line.substr(12, 13) == ")", "AAAAAAAAAAAA", - if(line.substr(13, 14) == ")", "AAAAAAAAAAAAA", - if(line.substr(14, 15) == ")", "AAAAAAAAAAAAAA", - if(line.substr(15, 16) == ")", "AAAAAAAAAAAAAAA", - if(line.substr(16, 17) == ")", "AAAAAAAAAAAAAAAA", - if(line.substr(17, 18) == ")", "AAAAAAAAAAAAAAAAA", - if(line.substr(18, 19) == ")", "AAAAAAAAAAAAAAAAAA", - if(line.substr(19, 20) == ")", "AAAAAAAAAAAAAAAAAAA", - if(line.substr(20, 21) == ")", "AAAAAAAAAAAAAAAAAAAA", - "AAAAAAAAAAAAAAAAAAAAA" - ))))))))))))))))))))).len() + 1 - ''; - - "format_short_signature(signature)" = "signature.name()"; - "format_timestamp(timestamp)" = "timestamp.ago()"; - "format_short_commit_header(commit)" = '' - separate(" ", - if(commit.current_working_copy(), label("active_marker", " ACTIVE ")), - if(commit.conflict(), label("conflict_marker", " CONFLICT ")), - format_short_change_id_with_hidden_and_divergent_info(commit), - format_short_signature(commit.author()), - label("muted", "|"), - if(commit.description().trim().len() > 0, label("muted", format_timestamp(commit_timestamp(commit)))), - commit.bookmarks(), - commit.tags(), - commit.working_copies(), - label("muted", "(") ++ - format_short_commit_id(commit.commit_id()) ++ - label("muted", ")"), - if(config("ui.show-cryptographic-signatures").as_boolean(), - format_short_cryptographic_signature(commit.signature())), - ) - ''; - }; - }; }; ssh = { enable = true; + enableDefaultConfig = false; extraConfig = '' SetEnv TERM=xterm-256color ''; matchBlocks = rec { + "*" = { }; zenith = { user = "clo"; port = 222; -- 2.54.0 From 4ce547cd1090c98735622fc88e72ab9bf7e34b5a Mon Sep 17 00:00:00 2001 From: clover caruso Date: Mon, 29 Dec 2025 06:15:52 -0800 Subject: [PATCH 27/27] clover: stuff --- modules/home/default.nix | 9 ++--- users/clover/home.nix | 71 ++++++++++++++------------------- users/clover/paperback/home.nix | 1 - users/clover/work/home.nix | 1 - 4 files changed, 33 insertions(+), 49 deletions(-) diff --git a/modules/home/default.nix b/modules/home/default.nix index 61259dc7c98b1faf4950be94f82fd5776f4de9a6..fc538513d7e2b2bfb7916c71e2a97e1aa8bcc633 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -140,12 +140,11 @@ in jujutsu = { settings = { user = { - name = config.programs.git.settings.user.name; - email = config.programs.git.settings.user.email; + inherit (config.programs.git.settings.user) name email; }; - signing = lib.mkIf (config.programs.git.signing.key != null) { - inherit (config.programs.git.signing) key; - backend = "gpg"; + signing = lib.mkIf (config.programs.git.signing.format != null) { + backend = config.programs.git.signing.format; + key = "~/.ssh/id_ed25519.pub"; # signatures are slow, compute them on push instead of on change. behavior = "drop"; }; diff --git a/users/clover/home.nix b/users/clover/home.nix index f48f27fa9434e915d801a530c837dd988107dd7c..7e413bb4c3b2119ee41154823fb239c50d796f50 100644 --- a/users/clover/home.nix +++ b/users/clover/home.nix @@ -21,18 +21,15 @@ in nh autofmt gnupg + nodejs_24 ]; # packages to install for desktop environments (non-server) desktop = [ - lazygit - jjui ]; # packages to install on all servers server = [ ]; # packages to install on macOS desktops - darwin = [ - raycast - ]; + darwin = [ ]; # packages to install on linux desktops linux = [ ]; @@ -109,46 +106,21 @@ in command jj "$@" fi } - - function push() { - command jj git push "$@" --dry-run - printf "Press any key to continue... " - read -r - if bash -c 'cd $(jj workspace root); bun local-ci'; then - command jj git push "$@" - fi - } - - function pr() { - message=$(jj log -r '@' -T 'description' --no-graph) - if [[ -z "$message" ]] || [[ "$message" = "WIP:"* ]]; then - jj desc - message=$(jj log -r '@' -T 'description' --no-graph) - if [[ -z "$message" ]] || [[ "$message" = "WIP:"* ]]; then - exit - fi - fi - if [ -n "$1" ]; then - if [[ "clo"/* = "$1" ]]; then - branch="$1"; - else - branch="clo/$1" - fi - command jj git push --named "$branch"=@ - else - command jj git push -c @ - branch="$(jj log -r '@-' -T 'bookmarks.join("\n")' --no-graph | head -1)" - fi - open "$(git remote get-url origin | sed 's/git@github\.com:/https:\/\/github.com\//' | sed 's/\.git$//')/compare/master...$branch?quick_pull=1&labels=awaiting+code+review,awaiting+functionality+review&body=" - } ''; }; - # use a git-specific email git = { + # use a git-specific email settings.user.email = "git@paperclover.net"; - settings.gpg.format = "ssh"; - signing.signByDefault = true; + settings.gpg.ssh.allowedSignersFile = "${pkgs.writeText "allowed_signers" '' + git@paperclover.net ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAVa1aq1LEj/VXHJYlR5HJpK65lS/9jOL/dAB9ZS1chd + ''}"; + # signing + signing = { + signByDefault = true; + key = "~/.ssh/id_ed25519"; + format = "ssh"; + }; }; jujutsu = { @@ -221,6 +193,15 @@ in revsets = { short-prefixes = "(trunk()..@)::"; }; + aliases = { + "ab" = [ "abandon" ]; + # "ai" = [ + # "util" + # "exec" + # "--" + # "~/jj-ai-sync.sh" + # ]; + }; }; }; @@ -228,15 +209,21 @@ in enable = true; enableDefaultConfig = false; extraConfig = '' + Include ~/.orbstack/ssh/config* + SetEnv TERM=xterm-256color ''; matchBlocks = rec { "*" = { }; zenith = { user = "clo"; - port = 222; + port = 22; + }; + "git.paperclover.net" = zenith; + "paperclover.net" = { + user = "clo"; + port = 22; }; - "nas.paperclover.net" = zenith; }; }; }; diff --git a/users/clover/paperback/home.nix b/users/clover/paperback/home.nix index 47d88a2034872f1efc7c06355eef2e3b004436b3..6686bc71ada574880cc557bb0207d2d8cef33c11 100644 --- a/users/clover/paperback/home.nix +++ b/users/clover/paperback/home.nix @@ -12,7 +12,6 @@ }; home.packages = with pkgs; [ deno - nodejs_22 rustup typescript pm2 diff --git a/users/clover/work/home.nix b/users/clover/work/home.nix index 63ec7800722bf7336ced60fcb9f0b40fd150051f..a6687ddcafbae66923c46d6cd449de1514f6eccc 100644 --- a/users/clover/work/home.nix +++ b/users/clover/work/home.nix @@ -19,7 +19,6 @@ })) doppler deno - nodejs_24 rustup typescript ssm-session-manager-plugin -- 2.54.0