diff --git a/nix/configurations/hetzner_benchmark.nix b/nix/configurations/hetzner_benchmark.nix index 515bfd3a..3f84df39 100644 --- a/nix/configurations/hetzner_benchmark.nix +++ b/nix/configurations/hetzner_benchmark.nix @@ -58,7 +58,6 @@ in ./hetzner_benchmark/nixos/misc.nix ./hetzner_benchmark/nixos/programs.nix ./hetzner_benchmark/nixos/builder.nix - ./hetzner_benchmark/nixos/sane-nix.nix ../nixosModules/common/fish.nix ../nixosModules/common/disable-command-not-found.nix diff --git a/nix/configurations/hetzner_benchmark/nixos/builder.nix b/nix/configurations/hetzner_benchmark/nixos/builder.nix index 1557a346..c8191c8d 100644 --- a/nix/configurations/hetzner_benchmark/nixos/builder.nix +++ b/nix/configurations/hetzner_benchmark/nixos/builder.nix @@ -12,7 +12,15 @@ users.groups.remotebuild = { }; nix = { nrBuildUsers = 64; # defaults to 32 - settings.trusted-users = [ "remotebuild" ]; + settings = { + trusted-users = [ "remotebuild" ]; + + min-free = 50 * 1024 * 1024 * 1024; # start gc when < 10 GB is available + max-free = 100 * 1024 * 1024 * 1024; # stop gc when 20 GB is available + + max-jobs = "auto"; + cores = 0; + }; }; systemd.services.nix-daemon.serviceConfig = { diff --git a/nix/configurations/hetzner_benchmark/nixos/sane-nix.nix b/nix/configurations/hetzner_benchmark/nixos/sane-nix.nix index d73c45e0..dc4e2f13 100644 --- a/nix/configurations/hetzner_benchmark/nixos/sane-nix.nix +++ b/nix/configurations/hetzner_benchmark/nixos/sane-nix.nix @@ -2,8 +2,8 @@ { # 500GB Storage nix.settings = { - min-free = 50 * 1024 * 1024 * 1024; - max-free = 100 * 1024 * 1024 * 1024; + min-free = 20 * 1024 * 1024 * 1024; + max-free = 50 * 1024 * 1024 * 1024; }; systemd.services.nix-daemon.serviceConfig = { diff --git a/nix/configurations/vanadium/home/xmonad/leanamonad.cabal b/nix/configurations/vanadium/home/xmonad/leanamonad.cabal index 9fd30e3b..bfe56163 100644 --- a/nix/configurations/vanadium/home/xmonad/leanamonad.cabal +++ b/nix/configurations/vanadium/home/xmonad/leanamonad.cabal @@ -25,7 +25,6 @@ library hs-source-dirs: lib exposed-modules: XMonad.Layout.Reflect.Message - XMonad.Layout.SetMasterNTall Data.Char.Greek executable leanamonad diff --git a/nix/configurations/vanadium/home/xmonad/lib/XMonad/Layout/SetMasterNTall.hs b/nix/configurations/vanadium/home/xmonad/lib/XMonad/Layout/SetMasterNTall.hs deleted file mode 100644 index a08f7742..00000000 --- a/nix/configurations/vanadium/home/xmonad/lib/XMonad/Layout/SetMasterNTall.hs +++ /dev/null @@ -1,30 +0,0 @@ -{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-} - --- Wraps ResizableTall, allows setting master count to a number directly -module XMonad.Layout.SetMasterNTall - ( SetMasterNTall(..) - , SetMasterN(..) - ) where - -import XMonad -import qualified XMonad.StackSet as W -import XMonad.Layout.ResizableTile - --- Message -data SetMasterN = SetMasterN Int -instance Message SetMasterN - --- Layout -newtype SetMasterNTall a = SetMasterNTall { unSetMasterNTall :: ResizableTall a } - deriving (Read, Show) - -instance LayoutClass SetMasterNTall a where - runLayout (W.Workspace t l s) = - let ws' = W.Workspace t (unSetMasterNTall l) s - in (fmap . fmap . fmap) SetMasterNTall . runLayout ws' - - handleMessage (SetMasterNTall l@(ResizableTall _n0 d f s)) mess - | Just (SetMasterN n) <- fromMessage mess = pure $ Just $ SetMasterNTall $ ResizableTall n d f s - | otherwise = (fmap . fmap) SetMasterNTall . handleMessage l $ mess - - description (SetMasterNTall l) = description l diff --git a/nix/configurations/vanadium/home/xmonad/xmonad.hs b/nix/configurations/vanadium/home/xmonad/xmonad.hs index e5c8ad57..2cf3dfb2 100644 --- a/nix/configurations/vanadium/home/xmonad/xmonad.hs +++ b/nix/configurations/vanadium/home/xmonad/xmonad.hs @@ -16,14 +16,15 @@ import XMonad.Hooks.OnPropertyChange import XMonad.Hooks.RefocusLast import XMonad.Hooks.StatusBar import XMonad.Layout.FocusTracking +import XMonad.Layout.IfMax 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.SetMasterNTall import XMonad.Layout.Spacing import XMonad.Layout.ToggleLayouts import qualified XMonad.StackSet as W @@ -71,16 +72,26 @@ main = myLayout = avoidStruts $ smartBorders - $ toggleLayouts (magnifierOff 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 + mkTallrN n = + smartSpacingWithEdge 5 + $ reflectMsg . reflectHoriz + $ ResizableTall n (1/10) (3/7) [] + tallr = renamed [ Replace "Tall" ] - $ smartSpacingWithEdge 5 - $ reflectMsg . reflectHoriz - $ SetMasterNTall - $ ResizableTall 1 (1/10) (3/7) [] + $ ifMax 3 (mkTallrN 1) + $ ifMax 5 (mkTallrN 2) + $ ifMax 7 (mkTallrN 3) + $ mkTallrN 4 isSioyek :: Query Bool isSioyek = className =? "sioyek" @@ -195,33 +206,14 @@ myEventHandleHook = -- Imagine Spotify playing in the background, a track change would focus that workspace. -- We prevent this by checking if the window is in the current workspace onTitleChange - ( windowIsInCurrentWorkspace --> composeAll - [ isSpotify --> doShiftAndGreedyView multimediaWS - , isYouTube --> doShiftAndGreedyView multimediaWS - , isDiscord --> doShiftAndGreedyView chatWS - , isWhatsApp --> doShiftAndGreedyView chatWS - , isElement --> doShiftAndGreedyView chatWS - ] - ) - <> setMasterNEventHandleHook - -setMasterNEventHandleHook :: Event -> X All -setMasterNEventHandleHook ev = - let adjustMasterCount :: X () - adjustMasterCount = do - count <- gets $ length . W.integrate' . W.stack . W.workspace . W.current . windowset - if count <= 3 then sendMessage (SetMasterN 1) - else if count <= 5 then sendMessage (SetMasterN 2) - else if count <= 7 then sendMessage (SetMasterN 3) - else pure () - in do - case ev of - MapRequestEvent{} -> adjustMasterCount - ConfigureEvent{} -> adjustMasterCount - DestroyWindowEvent {} -> adjustMasterCount - _ -> pure () - - pure (All True) + $ (windowIsInCurrentWorkspace -->) + $ composeAll + [ isSpotify --> doShiftAndGreedyView multimediaWS + , isYouTube --> doShiftAndGreedyView multimediaWS + , isDiscord --> doShiftAndGreedyView chatWS + , isWhatsApp --> doShiftAndGreedyView chatWS + , isElement --> doShiftAndGreedyView chatWS + ] doShiftAndGreedyView :: WorkspaceId -> Query (Endo WindowSet) doShiftAndGreedyView n = doF . go =<< ask @@ -408,6 +400,9 @@ altMask = mod1Mask myWorkspaces :: [WorkspaceId] myWorkspaces = map (:[]) $ take 8 greekLower +researchWS :: WorkspaceId +researchWS = myWorkspaces !! 2 + chatWS :: WorkspaceId chatWS = myWorkspaces !! 3