From b66c63601f2356f72fbe0f1f78a0dd8866615851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Sun, 7 Dec 2025 10:59:27 +0800 Subject: [PATCH 01/24] nvim/ruler: make type a ruler keyword --- .config/nvim/syntax/ruler.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.config/nvim/syntax/ruler.vim b/.config/nvim/syntax/ruler.vim index 386b7e16..c82ba8d6 100644 --- a/.config/nvim/syntax/ruler.vim +++ b/.config/nvim/syntax/ruler.vim @@ -11,6 +11,7 @@ syn match rulerTripleDot "\.\.\." syn match rulerDate "\d\d\d\d\D\d\d\D\d\d \d\d\D\d\d\D\(\d\d\|__\)" syn match rulerTag "\s\+[a-zA-Z]\+:[^\n]*" syn match rulerImport "import" +syn match rulerType "type" syn region rulerBlockComment start="{-" end="-}" @@ -19,6 +20,7 @@ hi def link rulerBlockComment Comment hi def link rulerTripleDot Comment hi def link rulerDate Macro hi def link rulerImport Keyword +hi def link rulerType Keyword hi def link rulerTag @property let b:current_syntax = "ruler" From 076a4448e78a0224026e835c2782e7187dbb1df6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Sun, 7 Dec 2025 16:01:51 +0800 Subject: [PATCH 02/24] networks: implement bssid support --- nix/networks/list.nix | 1 + nix/networks/wpa_supplicant-compat.nix | 40 ++++++++++++++----------- nix/secrets/wpa_password.age | Bin 920 -> 971 bytes 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/nix/networks/list.nix b/nix/networks/list.nix index 4ec25b95..aaeb1560 100644 --- a/nix/networks/list.nix +++ b/nix/networks/list.nix @@ -6,6 +6,7 @@ in [ { ssid = "~"; + bssid = "de:ad:de:ad:d0:d0"; # dead dead dodo priority = preferredPriority; hasPassword = true; } diff --git a/nix/networks/wpa_supplicant-compat.nix b/nix/networks/wpa_supplicant-compat.nix index 65f130a0..84f59504 100644 --- a/nix/networks/wpa_supplicant-compat.nix +++ b/nix/networks/wpa_supplicant-compat.nix @@ -13,31 +13,35 @@ let go = networkArgs@{ ssid, + bssid ? null, # Custom fields wrapping nixpkgs module options hasPassword ? false, scanOnLowSignal ? false, randomizeMac ? false, ... }: + let + uniqueKey = "${ssid}${lib.optionalString (bssid != null) bssid}"; + in { - ${ssid} = lib.mkMerge [ - (builtins.removeAttrs networkArgs [ - # We keep ssid, because it overrides the attrset name ssid - # "ssid" - "hasPassword" - "scanOnLowSignal" - "randomizeMac" - ]) - (lib.optionalAttrs hasPassword { - pskRaw = "ext:${escapePwdKey ssid}"; - }) - { - extraConfig = '' - ${lib.optionalString scanOnLowSignal "bgscan=\"simple:30:-70:3600\""} - ${lib.optionalString randomizeMac "mac_addr=1"} - ''; - } - ]; + ${uniqueKey} # we use a unique key here to make sure no "same ssid different bssid" networks collide in key. + = + lib.mkMerge [ + (builtins.removeAttrs networkArgs [ + "hasPassword" + "scanOnLowSignal" + "randomizeMac" + ]) + (lib.optionalAttrs hasPassword { + pskRaw = "ext:${escapePwdKey uniqueKey}"; # this implies changing the external password key if you set a bssid! + }) + { + extraConfig = '' + ${lib.optionalString scanOnLowSignal "bgscan=\"simple:30:-70:3600\""} + ${lib.optionalString randomizeMac "mac_addr=1"} + ''; + } + ]; }; in ns: lib.mkMerge (map go ns) diff --git a/nix/secrets/wpa_password.age b/nix/secrets/wpa_password.age index 17fe933a12c35c3483098c7731b9a81331bf2474..511c4742e7fc5182ddffe1887b03fe3ede23b115 100644 GIT binary patch delta 902 zcmV;119|+I2g?VLEPr=eO;|WWM^a)a|%;8R8w+Ed2v)hOnP)~a#CYLWLJ1KNKH>LXG1S|csN9ND_2r^acyF5V+t)k zAaiqQEoEdfH8n9gAZv3lYcN3|PGWaLq|0=Flb0gO-4a7L~n65Yhq7Rc2!C^ zWieH8bVY1+V@GOp3Q0?IYA<6^S8`EOcSUwIM=Mq@WlKhSLN`(~cu-9-Zfj6jab+|{ zSvY8Kk?|K-YF02aIW{?UHA`1ybxb!=WO7DiGgoqOW^HqKYDrNyM>9@UV>V+kWHLz# zIB-N)IZ+vaRdiEmVQoz^Rx(9HHBxj)D{N6%Gi*hZUjY|?FK}{G zGd4;yOK@XRQ+6*aK~ritFg7bsbWuu6cWF>iQfhKkcv5I=FfmmMY&kb%d1X;gP7YFhf&QT1#g!MR871Ry9INb7^R4D|JRtWmaPfEj}PRVlr%IEoX9NVRL05I$lOH zAU0!qb0RV}WeR#`b7fOXM@VUZLP2a!Z(49kY)^AIQ%i3~ZF+DqRA)_OQ8-I!I9Ebx zYBXecPH0(AQ*n4TOD}OkNqBT=T5&fDIAd@%N^43h3N0-yAZ2DUR%bJCVmMKGV>vQ- zaaUALH8)meF;04KL~vwpWh+N(LQ64qHc@163V&`lo0Dgo=lI{_xDoDu`#B(H>x4M; z%1Wo9&4V7jCM;6vq(j}Nyd}%l2IJ>~&|YIH@iQ?tm31ttydvpuoXG}!*NGB-NjWfW zl^*cV0vad7*rNIiTt4kFQpY>DT=q;Jl!l$&F)en4pkLi?eBDHqFa1Z6KMJNUdt{A; zAPoi;xm^VPL?QfCzIIf9;(Nz#6gzb`me|j5R+Rmoh&-zcbQuy>Ok`sl1*w@r3i zr6W;W6&+IMvBIqX*q1_7R|yJ$#M7Fk`Lg9tk|8Ef{0BA_QPCr8zFbk;vdk>YjAv^y zLvHYP9it*hIViwu_CL5SbefJxVljfxE}t}3FmbbheUveyeRz7%Dud5gCIA2c delta 851 zcmV-Z1FZbZ2bc$tEPqsFLq}#uMOrsFb7o66X*6wBL1aR2V>w!4FEw*lY&U6bN?Arn zR6#gLcM5n(OK3}CN-J1KL`iElR8MbZXI6M?H%B&bM`tiHR#Y%oL2hz-L2qX-O$seO zAaiqQEoEdfH8n9gAZv3lYcN3|IYm-+Phx0UMrm|0F?MWeMMhL{IBaroby;&TL1RU6 zGE_lwFjh4yPE%}m3OH6~Z+0>?cy?xUF-L7kOKDR$IBi8RG&5ytO?hQ@XirTrZBsLI zacFmQk?|K-QCdb-dNX5DT1r}1QBN;yD{WRuW^qVUZAC9xH)%Imcvo#SY;svwc}PhL zXGUdGZFzb#Y-4CgZhA*gWkqB(XfktfZFVq0Nj5iHNHI=rQBPWSGfh#GUjY|?T6b1d zGi+u;HE>#XPFHPWFHcTJQ#N-&G)yybXHhh4cXxPtMPp`XFL!SWMPo~HZ*)RyOG7z1 zN?JB|NHCYNR zEiE8eHBeAEX=h?;GEZ|eYItU6L{2hzGG$|0bYXLGPI6{KS~5Z~R4+(HMMVmqOV`L= zVuRVI&!-WO`{Jp2EC+**jo{(H Date: Mon, 8 Dec 2025 20:17:38 +0800 Subject: [PATCH 03/24] tree-wide: set nixpkgs in NIX_PATH without flake This prevents double fetch --- nix/configurations/hetzner_benchmark.nix | 7 +++---- nix/configurations/hydrogen.nix | 7 +++---- nix/configurations/vanadium.nix | 7 +++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/nix/configurations/hetzner_benchmark.nix b/nix/configurations/hetzner_benchmark.nix index 2fddb026..6201e6f1 100644 --- a/nix/configurations/hetzner_benchmark.nix +++ b/nix/configurations/hetzner_benchmark.nix @@ -31,6 +31,9 @@ in # nixpkgs # { + # don't use `nixpkgs.flake.source`, it uses flake so it double fetches + nix.nixPath = [ "nixpkgs=${sources.nixpkgs}" ]; + nixpkgs = { overlays = map import [ ../packages/overlay.nix @@ -39,10 +42,6 @@ in ../overlays/lix.nix ../overlays/nix-monitored.nix ]; - - # Set NIX_PATH and flake registry at the same time - # https://github.com/NixOS/nixpkgs/pull/254405 - flake.source = sources.nixpkgs; }; nix.package = pkgs.nix-monitored; diff --git a/nix/configurations/hydrogen.nix b/nix/configurations/hydrogen.nix index c751ef0a..5a303423 100644 --- a/nix/configurations/hydrogen.nix +++ b/nix/configurations/hydrogen.nix @@ -34,6 +34,9 @@ in # nixpkgs # { + # don't use `nixpkgs.flake.source`, it uses flake so it double fetches + nix.nixPath = [ "nixpkgs=${sources.nixpkgs}" ]; + nixpkgs = { overlays = map import [ ../overlays/agenix.nix @@ -45,10 +48,6 @@ in ../overlays/lix.nix ../overlays/nix-monitored.nix ]; - - # Set NIX_PATH and flake registry at the same time - # https://github.com/NixOS/nixpkgs/pull/254405 - flake.source = sources.nixpkgs; }; nix.package = pkgs.nix-monitored; diff --git a/nix/configurations/vanadium.nix b/nix/configurations/vanadium.nix index 2fba0b2a..f881d389 100644 --- a/nix/configurations/vanadium.nix +++ b/nix/configurations/vanadium.nix @@ -35,6 +35,9 @@ in nix = { distributedBuilds = true; settings.builders-use-substitutes = true; + + # don't use `nixpkgs.flake.source`, it uses flake so it double fetches + nixPath = [ "nixpkgs=${sources.nixpkgs}" ]; }; nixpkgs = { @@ -70,10 +73,6 @@ in ../overlays/lix.nix ../overlays/nix-monitored.nix ]; - - # Set NIX_PATH and flake registry at the same time - # https://github.com/NixOS/nixpkgs/pull/254405 - flake.source = sources.nixpkgs; }; nix.package = pkgs.nix-monitored; From 1e63c7bb53d8ea4fea22badb11995c6f426f0ca0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Mon, 8 Dec 2025 22:31:49 +0800 Subject: [PATCH 04/24] vanadium/xmonad: revamp layout algorithm - Use threecol everywhere except - chat and multimedia: use grid / accordion --- .../vanadium/home/xmonad/xmonad.hs | 62 +++++++++++++------ 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index bd224647..dd1c6ffc 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -1,7 +1,9 @@ {-# LANGUAGE NegativeLiterals #-} +{-# OPTIONS_GHC -Wno-missing-signatures #-} -- my layout is getting crazy import XMonad import XMonad.Actions.CopyWindow +import XMonad.Actions.PerWorkspaceKeys import XMonad.Actions.Submap import XMonad.Actions.SwapWorkspaces import XMonad.Hooks.DynamicLog @@ -12,19 +14,23 @@ import XMonad.Hooks.ManageHelpers import XMonad.Hooks.OnPropertyChange import XMonad.Hooks.RefocusLast import XMonad.Hooks.StatusBar -import XMonad.Layout.FocusTracking +import XMonad.Layout.Accordion +import XMonad.Layout.Grid +import XMonad.Layout.IfMax +import XMonad.Layout.LimitWindows +import XMonad.Layout.Maximize import XMonad.Layout.NoBorders -import XMonad.Layout.Reflect -import XMonad.Layout.Reflect.Message +import XMonad.Layout.PerWorkspace import XMonad.Layout.Renamed import XMonad.Layout.ResizableTile import XMonad.Layout.Spacing +import XMonad.Layout.ThreeColumns +import XMonad.Layout.ToggleLayouts import qualified XMonad.StackSet as W import XMonad.Util.EZConfig import XMonad.Util.Hacks import XMonad.Util.NamedScratchpad import XMonad.Util.SpawnOnce -import XMonad.Layout.Magnifier import Data.Char.Greek import Data.Ratio @@ -62,14 +68,31 @@ main = `additionalKeys` keybinds myLayout = - let tallr = renamed [ Replace "Tall" ] - $ smartSpacingWithEdge 5 - $ reflectMsg . reflectHoriz - $ ResizableTall 1 (1/10) (3/7) [] - mag = magnifyxy 1.05 1.3 (NoMaster 3) False - in avoidStruts - $ smartBorders - $ mag tallr ||| focusTracking Full + avoidStruts + $ smartBorders + $ onWorkspace chatWS (ifMaxToggle 2 grid accordion) + $ onWorkspace multimediaWS (ifMaxToggle 2 grid accordion) + -- Magifier doesn't work well with threecol's slaves + -- Full has the property of "only maximizing the focused one" + -- Maximize can have a window maximized but not focused, might be useful when programming + $ maximizeWithPadding 0 threecol + where + ifMaxToggle n tog l = ifMax n l (toggleLayouts tog l) + threecol = + renamed [ Replace "3Col" ] + $ smartSpacingWithEdge 5 + $ ThreeColMid 1 (3/100) (1/2) + + grid = + renamed [ Replace "Grid" ] + $ smartSpacingWithEdge 5 + $ Grid + + accordion = + renamed [ Replace "Accordion" ] + $ smartSpacingWithEdge 5 + $ limitSlice 3 + $ Accordion isSioyek :: Query Bool isSioyek = className =? "sioyek" @@ -264,9 +287,6 @@ keybinds = , ((0, xF86XK_AudioPlay), spawn "playerctl play-pause") , ((0, xF86XK_AudioNext), spawn "playerctl next" ) - -- Toggle fullscreen - , ((superMask, xK_Escape), sendMessage NextLayout) - -- Resize windows , ((superMask, xK_equal ), sendMessage $ IncMasterN 1) , ((superMask, xK_minus ), sendMessage $ IncMasterN -1) @@ -274,7 +294,11 @@ keybinds = , ((superMask, xK_period ), sendMessage Expand ) , ((superMask .|. shiftMask, xK_comma ), sendMessage MirrorShrink ) , ((superMask .|. shiftMask, xK_period), sendMessage MirrorExpand ) - , ((superMask , xK_apostrophe), sendMessage Toggle ) + , ((superMask , xK_space ), chooseAction $ \ws -> + if ws == chatWS then sendMessage ToggleLayout + else if ws == multimediaWS then sendMessage ToggleLayout + else withFocused (sendMessage . maximizeRestore) + ) -- [D]o sink and lift , ( (superMask, xK_d) @@ -343,12 +367,12 @@ altMask = mod1Mask myWorkspaces :: [WorkspaceId] myWorkspaces = map (:[]) $ take 8 greekLower -multimediaWS :: WorkspaceId -multimediaWS = myWorkspaces !! 6 - chatWS :: WorkspaceId chatWS = myWorkspaces !! 3 +multimediaWS :: WorkspaceId +multimediaWS = myWorkspaces !! 6 + centeredFloat, smallFloat, fullFloat, buttomRightFloat :: W.RationalRect centeredFloat = W.RationalRect (1%9) (1%9) (7%9) (7%9) smallFloat = W.RationalRect (3%5) (3%5) (2%7) (2%7) From 18201b4f478a2f3009c4717cf36549aa4d85d268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Tue, 9 Dec 2025 10:08:09 +0800 Subject: [PATCH 05/24] vanadium/xmonad: switch back to tallr --- .../vanadium/home/xmonad/xmonad.hs | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index dd1c6ffc..77481697 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -3,7 +3,6 @@ import XMonad import XMonad.Actions.CopyWindow -import XMonad.Actions.PerWorkspaceKeys import XMonad.Actions.Submap import XMonad.Actions.SwapWorkspaces import XMonad.Hooks.DynamicLog @@ -15,16 +14,19 @@ import XMonad.Hooks.OnPropertyChange import XMonad.Hooks.RefocusLast import XMonad.Hooks.StatusBar import XMonad.Layout.Accordion +import XMonad.Layout.FocusTracking import XMonad.Layout.Grid import XMonad.Layout.IfMax import XMonad.Layout.LimitWindows -import XMonad.Layout.Maximize +import XMonad.Layout.Magnifier hiding (Toggle) +import qualified XMonad.Layout.Magnifier as Mag import XMonad.Layout.NoBorders import XMonad.Layout.PerWorkspace +import XMonad.Layout.Reflect +import XMonad.Layout.Reflect.Message import XMonad.Layout.Renamed import XMonad.Layout.ResizableTile import XMonad.Layout.Spacing -import XMonad.Layout.ThreeColumns import XMonad.Layout.ToggleLayouts import qualified XMonad.StackSet as W import XMonad.Util.EZConfig @@ -70,18 +72,20 @@ main = myLayout = avoidStruts $ smartBorders + $ onWorkspace researchWS (ifMaxToggle 2 grid accordion) $ onWorkspace chatWS (ifMaxToggle 2 grid accordion) $ onWorkspace multimediaWS (ifMaxToggle 2 grid accordion) - -- Magifier doesn't work well with threecol's slaves - -- Full has the property of "only maximizing the focused one" - -- Maximize can have a window maximized but not focused, might be useful when programming - $ maximizeWithPadding 0 threecol + $ toggleLayouts (focusTracking Full) (mag tallr) where ifMaxToggle n tog l = ifMax n l (toggleLayouts tog l) - threecol = - renamed [ Replace "3Col" ] - $ smartSpacingWithEdge 5 - $ ThreeColMid 1 (3/100) (1/2) + + tallr = + renamed [ Replace "Tall" ] + $ smartSpacingWithEdge 5 + $ reflectMsg . reflectHoriz + $ ResizableTall 1 (1/10) (3/7) [] + + mag = magnifyxy 1.05 1.3 (NoMaster 3) False grid = renamed [ Replace "Grid" ] @@ -294,11 +298,8 @@ keybinds = , ((superMask, xK_period ), sendMessage Expand ) , ((superMask .|. shiftMask, xK_comma ), sendMessage MirrorShrink ) , ((superMask .|. shiftMask, xK_period), sendMessage MirrorExpand ) - , ((superMask , xK_space ), chooseAction $ \ws -> - if ws == chatWS then sendMessage ToggleLayout - else if ws == multimediaWS then sendMessage ToggleLayout - else withFocused (sendMessage . maximizeRestore) - ) + , ((superMask , xK_apostrophe), sendMessage Mag.Toggle ) + , ((superMask , xK_space ), sendMessage ToggleLayout ) -- [D]o sink and lift , ( (superMask, xK_d) @@ -367,6 +368,9 @@ altMask = mod1Mask myWorkspaces :: [WorkspaceId] myWorkspaces = map (:[]) $ take 8 greekLower +researchWS :: WorkspaceId +researchWS = myWorkspaces !! 2 + chatWS :: WorkspaceId chatWS = myWorkspaces !! 3 From f58cbc86ee863b1044204edd095eb5309720237f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Tue, 9 Dec 2025 10:34:59 +0800 Subject: [PATCH 06/24] xmobar: update events --- nix/configurations/vanadium/home/xmobar/xmobar.hs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nix/configurations/vanadium/home/xmobar/xmobar.hs b/nix/configurations/vanadium/home/xmobar/xmobar.hs index 314f4d50..6479154e 100644 --- a/nix/configurations/vanadium/home/xmobar/xmobar.hs +++ b/nix/configurations/vanadium/home/xmobar/xmobar.hs @@ -73,9 +73,10 @@ config = , "--target", "2025-10-31=dragon book" , "--target", "2025-11-19=scalpel" , "--target", "2025-11-29=à deux" - , "--target", "2025-12-16=dragon book" + -- , "--target", "2025-12-15=campus baguette" + -- , "--target", "2025-12-16=dragon book" + , "--target", "2025-12-18=baguette" , "--target", "2025-12-30=seule" - , "--target", "2025-12-15=campus baguette" , "--target", "2026-02-02=monmaster" , "--target", "2026-02-22=dernier appel" ] From f525007c3d194eb50a3e81bb06d3f64c33a9c11e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Tue, 9 Dec 2025 14:29:52 +0800 Subject: [PATCH 07/24] vanadium: +foliate --- nix/configurations/vanadium/home/programs.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/configurations/vanadium/home/programs.nix b/nix/configurations/vanadium/home/programs.nix index a2b44af7..f97136e1 100644 --- a/nix/configurations/vanadium/home/programs.nix +++ b/nix/configurations/vanadium/home/programs.nix @@ -85,6 +85,7 @@ pkgs.evolution pkgs.libreoffice pkgs.calibre + pkgs.foliate # TODO: replace calibre with foliate # pkgs.rawtherapee pkgs.digikam pkgs.gimp From f27de9f0592a76771a63d446f5d9053e326034dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Tue, 9 Dec 2025 15:12:11 +0800 Subject: [PATCH 08/24] vanadium/xmonad: rotate accordion 90 degrees --- nix/configurations/vanadium/home/xmonad/xmonad.hs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index 77481697..f0d90a85 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -72,13 +72,11 @@ main = myLayout = avoidStruts $ smartBorders - $ onWorkspace researchWS (ifMaxToggle 2 grid accordion) - $ onWorkspace chatWS (ifMaxToggle 2 grid accordion) - $ onWorkspace multimediaWS (ifMaxToggle 2 grid accordion) + $ onWorkspace researchWS (toggleLayouts grid accordion) + $ onWorkspace chatWS (toggleLayouts grid accordion) + $ onWorkspace multimediaWS (toggleLayouts grid accordion) $ toggleLayouts (focusTracking Full) (mag tallr) where - ifMaxToggle n tog l = ifMax n l (toggleLayouts tog l) - tallr = renamed [ Replace "Tall" ] $ smartSpacingWithEdge 5 @@ -96,6 +94,7 @@ myLayout = renamed [ Replace "Accordion" ] $ smartSpacingWithEdge 5 $ limitSlice 3 + $ Mirror $ Accordion isSioyek :: Query Bool From 1b6d0a63e1199f71e134b550ab512191eae53be4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Tue, 9 Dec 2025 20:14:29 +0800 Subject: [PATCH 09/24] vanadium/xmonad: make tab direction consistent across layouts --- nix/configurations/vanadium/home/xmonad/xmonad.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index f0d90a85..941cd251 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -94,6 +94,7 @@ myLayout = renamed [ Replace "Accordion" ] $ smartSpacingWithEdge 5 $ limitSlice 3 + $ reflectHoriz $ Mirror $ Accordion From aeadf11d992b15a4d48707f108a1bf90eac98743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Tue, 9 Dec 2025 20:18:38 +0800 Subject: [PATCH 10/24] home/zen-browser: remove border --- nix/homeModules/common/zen-browser.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nix/homeModules/common/zen-browser.nix b/nix/homeModules/common/zen-browser.nix index be5ded5b..4b2e2fbc 100644 --- a/nix/homeModules/common/zen-browser.nix +++ b/nix/homeModules/common/zen-browser.nix @@ -59,6 +59,9 @@ in # diff .zen/default/prefs.js{.bk,} profiles.default = { settings = { + # Zen specific + "zen.theme.content-element-separation" = 0; # Remove "borders" around window + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; "browser.tabs.loadInBackground" = true; "browser.ctrlTab.sortByRecentlyUsed" = false; From 0a0020a641aedd9adfb42df86e5ec77857bdefa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Tue, 9 Dec 2025 21:44:21 +0800 Subject: [PATCH 11/24] vanadium/xmonad: remove redundant import --- nix/configurations/vanadium/home/xmonad/xmonad.hs | 1 - 1 file changed, 1 deletion(-) diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index 941cd251..0e1d277a 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -16,7 +16,6 @@ import XMonad.Hooks.StatusBar import XMonad.Layout.Accordion import XMonad.Layout.FocusTracking import XMonad.Layout.Grid -import XMonad.Layout.IfMax import XMonad.Layout.LimitWindows import XMonad.Layout.Magnifier hiding (Toggle) import qualified XMonad.Layout.Magnifier as Mag From a1177c3378dcc06dc19e380424b87ea5f331bce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Tue, 9 Dec 2025 22:18:26 +0800 Subject: [PATCH 12/24] vanadium/xmonad: revert to (a better version of) tallr --- .../vanadium/home/xmonad/xmonad.hs | 43 +++++++------------ 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index 0e1d277a..a1b0ace7 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -13,10 +13,8 @@ import XMonad.Hooks.ManageHelpers import XMonad.Hooks.OnPropertyChange import XMonad.Hooks.RefocusLast import XMonad.Hooks.StatusBar -import XMonad.Layout.Accordion import XMonad.Layout.FocusTracking -import XMonad.Layout.Grid -import XMonad.Layout.LimitWindows +import XMonad.Layout.IfMax import XMonad.Layout.Magnifier hiding (Toggle) import qualified XMonad.Layout.Magnifier as Mag import XMonad.Layout.NoBorders @@ -71,31 +69,24 @@ main = myLayout = avoidStruts $ smartBorders - $ onWorkspace researchWS (toggleLayouts grid accordion) - $ onWorkspace chatWS (toggleLayouts grid accordion) - $ onWorkspace multimediaWS (toggleLayouts grid accordion) - $ toggleLayouts (focusTracking Full) (mag tallr) + $ onWorkspace researchWS (toggleLayouts (magnifier tallr) full) + $ onWorkspace chatWS (toggleLayouts (magnifier tallr) full) + $ onWorkspace multimediaWS (toggleLayouts (magnifier tallr) full) + $ toggleLayouts (magnifier tallr) full where + full = focusTracking Full + + tallrN n = + smartSpacingWithEdge 5 + $ reflectMsg . reflectHoriz + $ ResizableTall n (1/10) (3/7) [] + tallr = renamed [ Replace "Tall" ] - $ smartSpacingWithEdge 5 - $ reflectMsg . reflectHoriz - $ ResizableTall 1 (1/10) (3/7) [] - - mag = magnifyxy 1.05 1.3 (NoMaster 3) False - - grid = - renamed [ Replace "Grid" ] - $ smartSpacingWithEdge 5 - $ Grid - - accordion = - renamed [ Replace "Accordion" ] - $ smartSpacingWithEdge 5 - $ limitSlice 3 - $ reflectHoriz - $ Mirror - $ Accordion + $ ifMax 3 (tallrN 1) + $ ifMax 5 (tallrN 2) + $ ifMax 7 (tallrN 3) + $ tallrN 4 isSioyek :: Query Bool isSioyek = className =? "sioyek" @@ -291,8 +282,6 @@ keybinds = , ((0, xF86XK_AudioNext), spawn "playerctl next" ) -- Resize windows - , ((superMask, xK_equal ), sendMessage $ IncMasterN 1) - , ((superMask, xK_minus ), sendMessage $ IncMasterN -1) , ((superMask, xK_comma ), sendMessage Shrink ) , ((superMask, xK_period ), sendMessage Expand ) , ((superMask .|. shiftMask, xK_comma ), sendMessage MirrorShrink ) From 95ed521889f84d6257f1a50d8a49bdbf835eba14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Wed, 10 Dec 2025 09:27:15 +0800 Subject: [PATCH 13/24] vanadium/xmonad: magnifier default to off --- .../vanadium/home/xmonad/xmonad.hs | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index a1b0ace7..f8779346 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -69,24 +69,26 @@ main = myLayout = avoidStruts $ smartBorders - $ onWorkspace researchWS (toggleLayouts (magnifier tallr) full) - $ onWorkspace chatWS (toggleLayouts (magnifier tallr) full) - $ onWorkspace multimediaWS (toggleLayouts (magnifier tallr) full) - $ toggleLayouts (magnifier tallr) full + $ onWorkspace researchWS (toggleLayouts (mag tallr) full) + $ onWorkspace chatWS (toggleLayouts (mag tallr) full) + $ onWorkspace multimediaWS (toggleLayouts (mag tallr) full) + $ toggleLayouts (mag tallr) full where + mag = magnifierOff + full = focusTracking Full - tallrN n = + mkTallrN n = smartSpacingWithEdge 5 $ reflectMsg . reflectHoriz $ ResizableTall n (1/10) (3/7) [] tallr = renamed [ Replace "Tall" ] - $ ifMax 3 (tallrN 1) - $ ifMax 5 (tallrN 2) - $ ifMax 7 (tallrN 3) - $ tallrN 4 + $ ifMax 3 (mkTallrN 1) + $ ifMax 5 (mkTallrN 2) + $ ifMax 7 (mkTallrN 3) + $ mkTallrN 4 isSioyek :: Query Bool isSioyek = className =? "sioyek" From 45c4e95843d6810f8197a2b5c589e61f110f0a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Wed, 10 Dec 2025 21:26:47 +0800 Subject: [PATCH 14/24] packages/ruler: update --- nix/packages/by-name/ruler/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nix/packages/by-name/ruler/package.nix b/nix/packages/by-name/ruler/package.nix index 0e7d8aa9..88a13b25 100644 --- a/nix/packages/by-name/ruler/package.nix +++ b/nix/packages/by-name/ruler/package.nix @@ -11,8 +11,8 @@ let domain = "git.confusedcompiler.org"; owner = "leana8959"; repo = "ruler"; - rev = "2556b4985065d093b1db3a14a2c5c37115871c78"; - hash = "sha256-OvNhDpyAbZp+d0rSXLE55BvM5jT3OI8q79D6aVaA2FI="; + rev = "eec8c5024321a82e6129f86e5572331755a4d1c1"; + hash = "sha256-uYVvWpMnq6CNQmmM+5uuXwCvzDyWiYaA1nhrrPAAFMg="; }) { }; cabalOverrides = o: { From 8b15436a358de94a61961d9c996c145932c7a16c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Wed, 10 Dec 2025 21:32:02 +0800 Subject: [PATCH 15/24] nvim/ruler: make comment hl-group recursive --- .config/nvim/syntax/ruler.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/nvim/syntax/ruler.vim b/.config/nvim/syntax/ruler.vim index c82ba8d6..83eb0ff7 100644 --- a/.config/nvim/syntax/ruler.vim +++ b/.config/nvim/syntax/ruler.vim @@ -10,10 +10,10 @@ syn match rulerLineComment "--.*$" syn match rulerTripleDot "\.\.\." syn match rulerDate "\d\d\d\d\D\d\d\D\d\d \d\d\D\d\d\D\(\d\d\|__\)" syn match rulerTag "\s\+[a-zA-Z]\+:[^\n]*" -syn match rulerImport "import" -syn match rulerType "type" +syn keyword rulerImport import +syn keyword rulerType type -syn region rulerBlockComment start="{-" end="-}" +syn region rulerBlockComment start="{-" end="-}" contains=rulerBlockComment hi def link rulerLineComment Comment hi def link rulerBlockComment Comment From 4adfabafa9868cd811f0707e5b095f6678145f4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Wed, 10 Dec 2025 22:28:29 +0800 Subject: [PATCH 16/24] npins: update sources --- npins/sources.json | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/npins/sources.json b/npins/sources.json index d84bc0d3..d02e14f7 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -114,9 +114,9 @@ }, "branch": "release-25.11", "submodules": false, - "revision": "3fdd076e08049a9c7a83149b270440d9787d2df5", - "url": "https://github.com/nix-community/home-manager/archive/3fdd076e08049a9c7a83149b270440d9787d2df5.tar.gz", - "hash": "07k47xnkzha7ilcyak57wrh2ngka2j4f0d95zyyxn8jz8195q2q6" + "revision": "20561be440a11ec57a89715480717baf19fe6343", + "url": "https://github.com/nix-community/home-manager/archive/20561be440a11ec57a89715480717baf19fe6343.tar.gz", + "hash": "1n2l891p04y3xmd0sl5i3553ndgpxkinysg1bf8iiixmxhcm7i9v" }, "infuse": { "type": "GitRelease", @@ -144,9 +144,9 @@ }, "branch": "main", "submodules": false, - "revision": "01e573c9e31ba3be7eaa848ba7dfcbd04260163e", - "url": "https://github.com/oxalica/nil/archive/01e573c9e31ba3be7eaa848ba7dfcbd04260163e.tar.gz", - "hash": "0j8dix0a29lmszpl0gpv9whrhigs9bj4s2is3rsdwqc6gviqsq92" + "revision": "504599f7e555a249d6754698473124018b80d121", + "url": "https://github.com/oxalica/nil/archive/504599f7e555a249d6754698473124018b80d121.tar.gz", + "hash": "1mzx60999jciq2ax1l5ajmks6fb3cmjavn7fsyh4aysvcdgzrj6p" }, "nix-monitored": { "type": "Git", @@ -173,10 +173,10 @@ "version_upper_bound": null, "release_prefix": null, "submodules": false, - "version": "v0.6.3", - "revision": "477021a0f5b2fce11cb73dde9ecce49094f56db0", - "url": "https://api.github.com/repos/utdemir/nix-tree/tarball/v0.6.3", - "hash": "1hzss0sqxhyjp1f8v1p2sqv1636943brwl2x0vn2f851xbb6kgz7" + "version": "v0.8.0", + "revision": "e7ef6623cf944b80e48196d74c6531dd79943652", + "url": "https://api.github.com/repos/utdemir/nix-tree/tarball/v0.8.0", + "hash": "1ag68xnszianrfinm56mf9bhvm0pglvnmlyffjr1pxrkji8d52nc" }, "nixos-hardware": { "type": "Git", @@ -200,9 +200,9 @@ }, "branch": "nixos-25.11-small", "submodules": false, - "revision": "e9f8538978f954bed00f6535b764e7932dbc3eea", - "url": "https://github.com/nixos/nixpkgs/archive/e9f8538978f954bed00f6535b764e7932dbc3eea.tar.gz", - "hash": "07wdninn693v06jz537pn1d257idi7p3dqh1mvygsb2zf6y4hypm" + "revision": "1acf2f172ef3d6e31c9913ccb7ba07b13dadfedc", + "url": "https://github.com/nixos/nixpkgs/archive/1acf2f172ef3d6e31c9913ccb7ba07b13dadfedc.tar.gz", + "hash": "1hhjz7jx0n0i2mxq9d3yvqvlmrwjklq1ljcfzpmnzyfhrixqg9y5" }, "nur": { "type": "Git", @@ -213,9 +213,9 @@ }, "branch": "main", "submodules": false, - "revision": "cdeb308c4faaa430f951e81db2360cebb54feb58", - "url": "https://github.com/nix-community/nur/archive/cdeb308c4faaa430f951e81db2360cebb54feb58.tar.gz", - "hash": "1jjsgmg3maqkrncwc3fn7iqcsi88fjvfzkpchcc1iwih65kr91il" + "revision": "e7844e0f24c76b6137e16ab95c9a7c275acf2fbb", + "url": "https://github.com/nix-community/nur/archive/e7844e0f24c76b6137e16ab95c9a7c275acf2fbb.tar.gz", + "hash": "10bz6b1j2d5z257xv8bjwdr1636f807f2gr24yaswxr55a7wdyk9" }, "pin-emacs28": { "type": "Git", @@ -378,9 +378,9 @@ }, "branch": "main", "submodules": false, - "revision": "8c9284cc227a5c7cd8f1e1fa7a6882b0907187c8", - "url": "https://github.com/0xc000022070/zen-browser-flake/archive/8c9284cc227a5c7cd8f1e1fa7a6882b0907187c8.tar.gz", - "hash": "1k0bxn3c9bsm5543wsijv6r73jb8c1a4pzcwqh7rjpn67n988hj2" + "revision": "1adab25828578301037855c59849e9bbecf8948b", + "url": "https://github.com/0xc000022070/zen-browser-flake/archive/1adab25828578301037855c59849e9bbecf8948b.tar.gz", + "hash": "091sdxgqxcmxh15w9b65bv29fw0cgg0mfpl3d1ymsv1510lq30a6" } }, "version": 5 From 123faf4f0a2a18232e07875b9d8e43567c055a53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Thu, 11 Dec 2025 08:48:54 +0800 Subject: [PATCH 17/24] packages/ruler: hoogle --- nix/packages/by-name/ruler/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nix/packages/by-name/ruler/package.nix b/nix/packages/by-name/ruler/package.nix index 88a13b25..93ca8105 100644 --- a/nix/packages/by-name/ruler/package.nix +++ b/nix/packages/by-name/ruler/package.nix @@ -1,3 +1,5 @@ +# Use the following to start a hoogle server for the project +# nix-shell -E 'with import ./. {}; packages.ruler.envFunc{withHoogle = true;}' --run "hoogle server --local" { haskellPackages, haskell, From 214eaa957cf2d6624699faf09b6c55ff7f7c18a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Thu, 11 Dec 2025 09:54:44 +0800 Subject: [PATCH 18/24] vanadium: enable hoogle --- nix/configurations/vanadium/nixos/programs.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/nix/configurations/vanadium/nixos/programs.nix b/nix/configurations/vanadium/nixos/programs.nix index 74d4be3e..b3e3ec6d 100644 --- a/nix/configurations/vanadium/nixos/programs.nix +++ b/nix/configurations/vanadium/nixos/programs.nix @@ -78,4 +78,15 @@ ''; }; }; + + services.hoogle = { + enable = true; + packages = + haskellPackages: with haskellPackages; [ + optparse-applicative + megaparsec + tasty-golden + tree-diff + ]; + }; } From 8aecd18722cf58fb8d621618f60cd49cc154253e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Thu, 11 Dec 2025 22:04:10 +0800 Subject: [PATCH 19/24] vanadium/xmonad: warp to window --- nix/configurations/vanadium/home/xmonad/xmonad.hs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index f8779346..415a0fc1 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -5,6 +5,7 @@ import XMonad import XMonad.Actions.CopyWindow import XMonad.Actions.Submap import XMonad.Actions.SwapWorkspaces +import XMonad.Actions.Warp import XMonad.Hooks.DynamicLog import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.InsertPosition @@ -300,6 +301,19 @@ keybinds = ) ] + -- We override default focus shifting bindings to warp the cursor to the center of the new window. + -- This is especially useful because mag doesn't work well with focusFollowsMouse. + -- The order is important: focus shift, and then warp the cursor + -- + -- Warp when focus shifts by binding, not by mouse (otherwise it's annoying) + ++ (let warp = warpToWindow 0.5 0.5 + in [ ((superMask, xK_Tab ), windows W.focusDown >> warp) + , ((superMask .|. shiftMask, xK_Tab ), windows W.focusUp >> warp) + , ((superMask, xK_j ), windows W.focusDown >> warp) + , ((superMask, xK_k ), windows W.focusUp >> warp) + ] + ) + -- Screenshots ++ (let fullscreen = "maim -u | xclip -in -selection clipboard -t image/png" withSelection = "maim -u -s -b 5 -o | xclip -in -selection clipboard -t image/png" From a1524540e8990d18b8b841f904bc2c4434efc140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Thu, 11 Dec 2025 22:19:33 +0800 Subject: [PATCH 20/24] vanadium: +duckstation --- nix/configurations/vanadium/home/programs.nix | 4 ++++ nix/configurations/vanadium/nixos/unfree-predicate.nix | 2 ++ 2 files changed, 6 insertions(+) diff --git a/nix/configurations/vanadium/home/programs.nix b/nix/configurations/vanadium/home/programs.nix index f97136e1..45a14481 100644 --- a/nix/configurations/vanadium/home/programs.nix +++ b/nix/configurations/vanadium/home/programs.nix @@ -126,6 +126,10 @@ pkgs.pavucontrol pkgs.pulseaudio # pactl value control pkgs.pantheon.elementary-sound-theme + + # games + pkgs.duckstation # PS emulator + # let's adore Lain ]; programs = { diff --git a/nix/configurations/vanadium/nixos/unfree-predicate.nix b/nix/configurations/vanadium/nixos/unfree-predicate.nix index d880c61f..92dcc72b 100644 --- a/nix/configurations/vanadium/nixos/unfree-predicate.nix +++ b/nix/configurations/vanadium/nixos/unfree-predicate.nix @@ -18,6 +18,8 @@ "posy-cursors" "discord" + + "duckstation" ] || builtins.any (lib.flip lib.hasInfix name) [ # Scanner From a1dd3560b72c3ddf007e1c48db17769403f7fd98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Thu, 11 Dec 2025 22:30:19 +0800 Subject: [PATCH 21/24] Revert "vanadium: +duckstation" This reverts commit a1524540e8990d18b8b841f904bc2c4434efc140. --- nix/configurations/vanadium/home/programs.nix | 4 ---- nix/configurations/vanadium/nixos/unfree-predicate.nix | 2 -- 2 files changed, 6 deletions(-) diff --git a/nix/configurations/vanadium/home/programs.nix b/nix/configurations/vanadium/home/programs.nix index 45a14481..f97136e1 100644 --- a/nix/configurations/vanadium/home/programs.nix +++ b/nix/configurations/vanadium/home/programs.nix @@ -126,10 +126,6 @@ pkgs.pavucontrol pkgs.pulseaudio # pactl value control pkgs.pantheon.elementary-sound-theme - - # games - pkgs.duckstation # PS emulator - # let's adore Lain ]; programs = { diff --git a/nix/configurations/vanadium/nixos/unfree-predicate.nix b/nix/configurations/vanadium/nixos/unfree-predicate.nix index 92dcc72b..d880c61f 100644 --- a/nix/configurations/vanadium/nixos/unfree-predicate.nix +++ b/nix/configurations/vanadium/nixos/unfree-predicate.nix @@ -18,8 +18,6 @@ "posy-cursors" "discord" - - "duckstation" ] || builtins.any (lib.flip lib.hasInfix name) [ # Scanner From 161a228bd53c827555b91747d55f73aed6b62bd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Sat, 13 Dec 2025 21:40:39 +0800 Subject: [PATCH 22/24] networks: fix ordering and add new network --- nix/networks/list.nix | 7 ++++ nix/networks/wpa_supplicant-compat.nix | 46 ++++++++++++++----------- nix/secrets/wpa_password.age | Bin 971 -> 952 bytes 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/nix/networks/list.nix b/nix/networks/list.nix index aaeb1560..30401b42 100644 --- a/nix/networks/list.nix +++ b/nix/networks/list.nix @@ -81,6 +81,13 @@ in hasPassword = true; randomizeMac = true; } + { + ssid = "LouisaCoffee"; + bssid = "fa:92:bf:62:7c:19"; + priority = privatePriority; + hasPassword = true; + randomizeMac = true; + } { ssid = "MetroTaipei x Louisa"; # 大安 priority = privatePriority; diff --git a/nix/networks/wpa_supplicant-compat.nix b/nix/networks/wpa_supplicant-compat.nix index 84f59504..2f57b267 100644 --- a/nix/networks/wpa_supplicant-compat.nix +++ b/nix/networks/wpa_supplicant-compat.nix @@ -20,28 +20,32 @@ let randomizeMac ? false, ... }: - let - uniqueKey = "${ssid}${lib.optionalString (bssid != null) bssid}"; - in { - ${uniqueKey} # we use a unique key here to make sure no "same ssid different bssid" networks collide in key. - = - lib.mkMerge [ - (builtins.removeAttrs networkArgs [ - "hasPassword" - "scanOnLowSignal" - "randomizeMac" - ]) - (lib.optionalAttrs hasPassword { - pskRaw = "ext:${escapePwdKey uniqueKey}"; # this implies changing the external password key if you set a bssid! - }) - { - extraConfig = '' - ${lib.optionalString scanOnLowSignal "bgscan=\"simple:30:-70:3600\""} - ${lib.optionalString randomizeMac "mac_addr=1"} - ''; - } - ]; + ${ + # We use a unique key here to make sure no "same ssid different bssid" networks collide in key. + # This is ordered, we still show "null" so that it would come after hex characters [a-z0-9]. + # The serialization is based on string order. + "${ssid},${if bssid != null then bssid else "null"}" + } = + lib.mkMerge [ + (builtins.removeAttrs networkArgs [ + "hasPassword" + "scanOnLowSignal" + "randomizeMac" + ]) + (lib.optionalAttrs hasPassword { + pskRaw = "ext:${ + # this implies changing the external password key if you set a bssid! + escapePwdKey (if bssid == null then ssid else "${ssid},${bssid}") + }"; + }) + { + extraConfig = '' + ${lib.optionalString scanOnLowSignal "bgscan=\"simple:30:-70:3600\""} + ${lib.optionalString randomizeMac "mac_addr=1"} + ''; + } + ]; }; in ns: lib.mkMerge (map go ns) diff --git a/nix/secrets/wpa_password.age b/nix/secrets/wpa_password.age index 511c4742e7fc5182ddffe1887b03fe3ede23b115..3a79d0bc4412837153e42678205a6f65d6af9518 100644 GIT binary patch delta 883 zcmV-(1C0F32e=22EPqx`N@Qn4bZBr?I6^aUdUHxGH6CCR8m)2 zZAD5&GzwE$Y+-URc~~!GL_{`1b97BMbWAiiaW8K) zaY0Z;k?|K-HhFqvc4jv>T32dHWOY_#Q&d?oMR_wYc4stDRW@`@Ic{lVc0^c4Y(Y&5 zO+`X?Z#Gn7Y)oN!N>OPwVM{c1cS%%gS2aU%c5Y`$bZ<{-Gf8$fH7iwb7de#d37Lq z3UXB|Nmgu0bV)WxNj7s=aamJ;dTV!g3N0-yAbM~_R%~I z9tT7WN1_QiicTFPCX;J7Y2Y9aIp)9cq#f#^W56H9hbwm)e(>n|S-47ne%s3Is9bdF zP?t_6seTYxYuChaAg9GWT=qD2el6BUjWbllxB zy3-YWjthZ3*Js3~8*N=a6bQ7G!P-3)=Ta-bZ~b;xy7azM=vqk?n@ATU>F1s&#quH6 zFveBkm5n+ly_>w{q~830EJ?OFtir~%O<0zRS$xT&G9J#Tc8lO_w`)S*sr{)MP@*yt?;D>P%Z+_MTRn7=NTGql&k za2-b{K;koC@9e-#QlJIpno?e(_zxve61enj9#orfh92@~o#?$rfCK2G<=|^4Xh1QH zbo5>*encXsTteUAVR7r|OKiEnjbpbx>~`FAI^0MePcPzCzYGg)?mI#4n-CX8;sF10 Jo?KC36pI`dVqO3M delta 902 zcmV;119|+o2g?VLEPr=eO;|WWM^a)a|%;8R8w+Ed2v)hOnP)~a#CYLWLJ1KNKH>LXG1S|csN9ND_2r^acyF5V+t)k zAaiqQEoEdfH8n9gAZv3lYcN3|PGWaLq|0=Flb0gO-4a7L~n65Yhq7Rc2!C^ zWieH8bVY1+V@GOp3Q0?IYA<6^S8`EOcSUwIM=Mq@WlKhSLN`(~cu-9-Zfj6jab+|{ zSvY8Kk?|K-YF02aIW{?UHA`1ybxb!=WO7DiGgoqOW^HqKYDrNyM>9@UV>V+kWHLz# zIB-N)IZ+vaRdiEmVQoz^Rx(9HHBxj)D{N6%Gi*hZUjY|?FK}{G zGd4;yOK@XRQ+6*aK~ritFg7bsbWuu6cWF>iQfhKkcv5I=FfmmMY&kb%d1X;gP7YFhf&QT1#g!MR871Ry9INb7^R4D|JRtWmaPfEj}PRVlr%IEoX9NVRL05I$lOH zAU0!qb0RV}WeR#`b7fOXM@VUZLP2a!Z(49kY)^AIQ%i3~ZF+DqRA)_OQ8-I!I9Ebx zYBXecPH0(AQ*n4TOD}OkNqBT=T5&fDIAd@%N^43h3N0-yAZ2DUR%bJCVmMKGV>vQ- zaaUALH8)meF;04KL~vwpWh+N(LQ64qHc@163V&`lo0Dgo=lI{_xDoDu`#B(H>x4M; z%1Wo9&4V7jCM;6vq(j}Nyd}%l2IJ>~&|YIH@iQ?tm31ttydvpuoXG}!*NGB-NjWfW zl^*cV0vad7*rNIiTt4kFQpY>DT=q;Jl!l$&F)en4pkLi?eBDHqFa1Z6KMJNUdt{A; zAPoi;xm^VPL?QfCzIIf9;(Nz#6gzb`me|j5R+Rmoh&-zcbQuy>Ok`sl1*w@r3i zr6W;W6&+IMvBIqX*q1_7R|yJ$#M7Fk`Lg9tk|8Ef{0BA_QPCr8zFbk;vdk>YjAv^y zLvHYP9it*hIViwu_CL5SbefJxVljfxE}t}3FmbbheUveyeRz7%D)f(6MgRZ+ From e94302a78dc941c59a365e0b950c8d059ddfb039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Sun, 14 Dec 2025 11:30:34 +0800 Subject: [PATCH 23/24] packages/ruler: update --- nix/packages/by-name/ruler/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nix/packages/by-name/ruler/package.nix b/nix/packages/by-name/ruler/package.nix index 93ca8105..8cd1efb4 100644 --- a/nix/packages/by-name/ruler/package.nix +++ b/nix/packages/by-name/ruler/package.nix @@ -13,8 +13,8 @@ let domain = "git.confusedcompiler.org"; owner = "leana8959"; repo = "ruler"; - rev = "eec8c5024321a82e6129f86e5572331755a4d1c1"; - hash = "sha256-uYVvWpMnq6CNQmmM+5uuXwCvzDyWiYaA1nhrrPAAFMg="; + rev = "72069c79bd6540fb9a1ee941fa2502edd6853af8"; + hash = "sha256-UQYx1WoWxASnWINtlTE2zMrADBketo/bgo5aud5j8Og="; }) { }; cabalOverrides = o: { From 107aaa2f57e98f6c8f5515b1e547f5cca208cb54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Sun, 14 Dec 2025 11:31:51 +0800 Subject: [PATCH 24/24] ruler: add keyword "timezone" --- .config/nvim/syntax/ruler.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.config/nvim/syntax/ruler.vim b/.config/nvim/syntax/ruler.vim index 83eb0ff7..1554d4ef 100644 --- a/.config/nvim/syntax/ruler.vim +++ b/.config/nvim/syntax/ruler.vim @@ -12,6 +12,7 @@ syn match rulerDate "\d\d\d\d\D\d\d\D\d\d \d\d\D\d\d\D\(\d\d\|__\) syn match rulerTag "\s\+[a-zA-Z]\+:[^\n]*" syn keyword rulerImport import syn keyword rulerType type +syn keyword rulerTimezone timezone syn region rulerBlockComment start="{-" end="-}" contains=rulerBlockComment @@ -21,6 +22,7 @@ hi def link rulerTripleDot Comment hi def link rulerDate Macro hi def link rulerImport Keyword hi def link rulerType Keyword +hi def link rulerTimezone Keyword hi def link rulerTag @property let b:current_syntax = "ruler"