1
0
mirror of https://github.com/ellmau/nixos.git synced 2025-12-20 09:39:39 +01:00

Compare commits

..

No commits in common. "805d8f7ac2dbd2b9c90dd2b954c1a83ec83482c0" and "897fa059bcb7ecd67ec33d8e73dbd972b9460710" have entirely different histories.

11 changed files with 454 additions and 456 deletions

View File

@ -1,4 +1,10 @@
{ config, pkgs, inputs, nixos-hardware, ... }: { {
config,
pkgs,
inputs,
nixos-hardware,
...
}: {
imports = [ imports = [
../../common/users.nix ../../common/users.nix
./printer.nix ./printer.nix
@ -19,10 +25,9 @@
# enable X11 with lightdm and i3 # enable X11 with lightdm and i3
graphical = { graphical = {
enable = true; enable = true;
sway.enable = false; sway.enable = true;
i3.enable = false; i3.enable = false;
plasma.enable = false; plasma.enable = false;
xmonad.enable = true;
# set dpi if used in mobile applications # set dpi if used in mobile applications
# dpi = 180; # dpi = 180;
}; };
@ -34,10 +39,15 @@
openvpn.enable = true; openvpn.enable = true;
# nm-networks # nm-networks
networking.nmConnections = [ "tartaros" "eduroam" ]; networking.nmConnections = [
"tartaros"
"eduroam"
];
# enable sops # enable sops
sops = { enable = true; }; sops = {
enable = true;
};
# enable wireguard # enable wireguard
wireguard.enable = true; wireguard.enable = true;
@ -45,8 +55,8 @@
# user setup # user setup
users = { users = {
enable = true; enable = true;
admins = [ "ellmau" ]; admins = ["ellmau"];
users = [ ]; users = [];
meta = { meta = {
ellmau.git = { ellmau.git = {
@ -59,9 +69,13 @@
}; };
boot = { boot = {
extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; extraModulePackages = [
config.boot.kernelPackages.v4l2loopback
];
kernelModules = [ "v4l2loopback" ]; kernelModules = [
"v4l2loopback"
];
plymouth.enable = true; plymouth.enable = true;
}; };

View File

@ -21,10 +21,7 @@ with lib; {
DPI setting for the xserver DPI setting for the xserver
''; '';
}; };
xserver = { xserver.enable = mkEnableOption "enable X server";
enable = mkEnableOption "enable X server";
autorandr.enable = mkEnableOption "enable autorandr";
};
xmonad = { xmonad = {
enable = mkEnableOption "enable xmonad"; enable = mkEnableOption "enable xmonad";
polybar.enable = mkEnableOption "enable Polybar for xmonad"; polybar.enable = mkEnableOption "enable Polybar for xmonad";

View File

@ -1,33 +1,31 @@
{ config, pkgs, lib, ... }: {
config,
pkgs,
lib,
...
}:
with lib; { with lib; {
config = let cfg = config.elss.graphical.xmonad; config = let
in mkIf cfg.enable { cfg = config.elss.graphical.xmonad;
elss.graphical.xserver = { in
enable = true; mkIf cfg.enable {
autorandr.enable = true; elss.graphical.xserver.enable = true;
}; elss.users.dunst.enable = true;
elss.users.dunst.enable = true; elss.graphical.xmonad.polybar.enable = true;
elss.graphical.xmonad.polybar.enable = true; services = {
services = { xserver = {
xserver = { startDbusSession = true;
windowManager.xmonad = { windowManager.xmonad = {
enable = true; enable = true;
enableContribAndExtras = true; enableContribAndExtras = true;
};
displayManager.defaultSession = "none+xmonad";
libinput = {
enable = true;
disableWhileTyping = true;
};
}; };
displayManager.defaultSession = "none+xmonad"; upower.enable = true;
libinput = {
enable = true;
touchpad = { disableWhileTyping = true; };
};
};
upower.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
}; };
}; };
environment.systemPackages = with pkgs; [ firefox thunderbird ];
};
} }

View File

@ -1,134 +1,131 @@
{ config, pkgs, lib, nixosConfig, ... }: {
config,
pkgs,
lib,
nixosConfig,
...
}:
with lib; { with lib; {
config = let cfg = nixosConfig.elss.graphical.xserver.autorandr; config = let
in mkIf cfg.enable { cfg = nixosConfig.elss.graphical.i3;
#services.autorandr = { enable = true; }; in
programs.autorandr = { mkIf cfg.enable {
enable = true; programs.autorandr = {
profiles = { enable = true;
"home" = { profiles = {
fingerprint = { "home" = {
DP-1 = fingerprint = {
"00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf"; DP-1 = "00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf";
eDP-1 = eDP-1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
"00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; };
}; config = {
config = { eDP-1.enable = false;
eDP-1.enable = false; DP-1 = {
DP-1 = { enable = true;
enable = true; crtc = 1;
crtc = 1; primary = true;
primary = true; position = "0x0";
position = "0x0"; mode = "3840x2160";
mode = "3840x2160"; dpi = 96;
dpi = 96; };
}; };
}; };
}; "mobile" = {
"mobile" = { fingerprint.eDP-1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
fingerprint.eDP-1 = config = {
"00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; eDP-1 = {
config = { enable = true;
eDP-1 = { primary = true;
enable = true; mode = "3840x2160";
primary = true; dpi = 192;
mode = "3840x2160"; };
dpi = 192;
}; };
}; };
}; "work" = {
"work" = { fingerprint = {
fingerprint = { eDP-1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
eDP-1 = DP-2 = "00ffffffffffff0010acb5414c4133452c1e0104b53c22783eee95a3544c99260f5054a54b00e1c0d100d1c0b300a94081808100714f4dd000a0f0703e803020350055502100001a000000ff0031444e593132330a2020202020000000fd00184b1e8c36010a202020202020000000fc0044454c4c205532373230510a2001af020319f14c101f2005140413121103020123097f0783010000a36600a0f0703e803020350055502100001a565e00a0a0a029503020350055502100001a114400a0800025503020360055502100001a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d9";
"00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
DP-2 =
"00ffffffffffff0010acb5414c4133452c1e0104b53c22783eee95a3544c99260f5054a54b00e1c0d100d1c0b300a94081808100714f4dd000a0f0703e803020350055502100001a000000ff0031444e593132330a2020202020000000fd00184b1e8c36010a202020202020000000fc0044454c4c205532373230510a2001af020319f14c101f2005140413121103020123097f0783010000a36600a0f0703e803020350055502100001a565e00a0a0a029503020350055502100001a114400a0800025503020360055502100001a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d9";
};
config = {
eDP-1 = {
enable = true;
crtc = 0;
position = "3840x0";
mode = "3840x2160";
#dpi = 288;
dpi = 96;
}; };
DP-2 = { config = {
enable = true; eDP-1 = {
primary = true; enable = true;
mode = "3840x2160"; crtc = 0;
#dpi = 144; position = "3840x0";
dpi = 96; mode = "3840x2160";
position = "0x0"; #dpi = 288;
dpi = 96;
};
DP-2 = {
enable = true;
primary = true;
mode = "3840x2160";
#dpi = 144;
dpi = 96;
position = "0x0";
};
}; };
}; };
}; "home-nuc" = {
"home-nuc" = { fingerprint = {
fingerprint = { DP-2 = "00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf";
DP-2 = };
"00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf"; config = {
}; DP-2 = {
config = { enable = true;
DP-2 = { crtc = 1;
enable = true; primary = true;
crtc = 1; position = "0x0";
primary = true; mode = "3840x2160";
position = "0x0"; dpi = 96;
mode = "3840x2160"; };
dpi = 96;
}; };
}; };
};
"e3027" = { "e3027" = {
fingerprint = { fingerprint = {
e-DP1 = e-DP1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
"00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; DP-1 = "00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089";
DP-1 =
"00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089";
};
config = {
eDP-1 = {
enable = true;
crtc = 0;
position = "0x0";
mode = "3840x2160";
}; };
DP-1 = { config = {
enable = true; eDP-1 = {
crtc = 1; enable = true;
position = "3840x0"; crtc = 0;
mode = "1920x1200"; position = "0x0";
mode = "3840x2160";
};
DP-1 = {
enable = true;
crtc = 1;
position = "3840x0";
mode = "1920x1200";
};
}; };
}; };
};
"e3027-clone" = { "e3027-clone" = {
fingerprint = { fingerprint = {
e-DP1 = e-DP1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006";
"00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; DP-1 = "00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089";
DP-1 =
"00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089";
};
config = {
eDP-1 = {
enable = true;
crtc = 0;
position = "0x0";
mode = "1920x1200";
}; };
DP-1 = { config = {
enable = true; eDP-1 = {
crtc = 1; enable = true;
position = "0x0"; crtc = 0;
mode = "1920x1200"; position = "0x0";
mode = "1920x1200";
};
DP-1 = {
enable = true;
crtc = 1;
position = "0x0";
mode = "1920x1200";
};
}; };
}; };
}; };
}; hooks.postswitch = {
hooks.postswitch = { "polybar" = "systemctl --user restart polybar.service";
"polybar" = "systemctl --user restart polybar.service"; };
}; };
}; };
};
} }

View File

@ -1,7 +0,0 @@
#!/bin/sh
if [[ `setxkbmap -query | awk '$1 == "layout:"{print($2)}'` = "us" ]]; then
setxkbmap -layout de
else
setxkbmap -layout us
fi

View File

@ -1,2 +0,0 @@
module ELSS where
keyboardtoggle = "dummy"

View File

@ -1,59 +1,30 @@
module Main where module Main where
import ELSS
import Data.Ratio import Data.Ratio
import XMonad hiding ((|||)) import XMonad hiding ((|||))
import XMonad.Actions.FindEmptyWorkspace
import XMonad.Layout
import XMonad.Hooks.FadeInactive import XMonad.Hooks.FadeInactive
import XMonad.Hooks.FadeWindows import XMonad.Hooks.FadeWindows
import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.Place
import XMonad.Hooks.StatusBar import XMonad.Hooks.StatusBar
import XMonad.Util.EZConfig import XMonad.Util.EZConfig
import Network.HostName (getHostName) import Network.HostName (getHostName)
import qualified XMonad.StackSet as W
-- Imports for Polybar -- -- Imports for Polybar --
import qualified Codec.Binary.UTF8.String as UTF8 import qualified Codec.Binary.UTF8.String as UTF8
import qualified DBus as D import qualified DBus as D
import qualified DBus.Client as D import qualified DBus.Client as D
import XMonad.Hooks.DynamicLog import XMonad.Hooks.DynamicLog
-- Code Action Imports
import System.Exit
import XMonad.Actions.PhysicalScreens
import XMonad.Layout.NoBorders
import XMonad.Layout.Grid
import XMonad.Layout.Tabbed
import XMonad.Layout.Renamed
import XMonad.Layout.ThreeColumns
main :: IO () main :: IO ()
main' :: D.Client -> IO () main' :: D.Client -> IO ()
main = mkDbusClient >>= main' main = mkDbusClient >>= main'
workSpaces = ["code", "web", "misc", "comm"] ++ map show ([5 .. 9] ++ [0])
layout = smartBorders $ avoidStruts $
(tall ||| Mirror tall ||| Grid ||| Full ||| simpleTabbed ||| threemid)
where tall = Tall 1 (3/100) (1/2)
threemid = renamed [AppendWords "Mid"] $ ThreeColMid 1 (3/100) (1/2)
main' dbus = do main' dbus = do
hostname <- io $ getHostName hostname <- io $ getHostName
xmonad . docks . ewmhFullscreen . ewmh $ def xmonad . docks . ewmhFullscreen . ewmh $ def
{ terminal = "alacritty" { terminal = "alacritty"
, logHook = polybarLogHook dbus , logHook = polybarLogHook dbus
, layoutHook = layout
, modMask = mod4Mask -- rebind mod to super key
, keys = keyMap
, manageHook = myHookManager
, startupHook = do
startupHook def
spawn "autorandr -c"
, workspaces = workSpaces
} }
mkDbusClient :: IO D.Client mkDbusClient :: IO D.Client
@ -74,79 +45,22 @@ dbusOutput dbus str =
body = [D.toVariant $ UTF8.decodeString str] body = [D.toVariant $ UTF8.decodeString str]
in D.emit dbus $ signal { D.signalBody = body } in D.emit dbus $ signal { D.signalBody = body }
keyMap c = mkKeymap c $
[ ("M-<Return>" , spawn $ XMonad.terminal c)
, ("M-d" , spawn "rofi -show drun")
, ("M-<Tab>" , spawn "rofi -show window")
, ("M-S-q" , kill)
, ("M-<Space>" , sendMessage NextLayout)
, ("M-S-r" , refresh)
, ("M-j" , windows W.focusUp)
, ("M-k" , windows W.focusDown)
, ("M-S-j" , windows W.swapUp)
, ("M-S-k" , windows W.swapDown)
, ("M-;" , viewEmptyWorkspace)
, ("M-S-;" , tagToEmptyWorkspace)
, ("M-S-<Backspace>" , io exitSuccess)
, ("M-C-r" , broadcastMessage ReleaseResources >> restart "xmonad" True)
, ("M-C-j" , sendMessage Expand)
, ("M-C-k" , sendMessage Shrink)
, ("M-w" , viewScreen def 0)
, ("M-e" , viewScreen def 1)
, ("M-r" , viewScreen def 2)
, ("M-S-w" , sendToScreen def 0)
, ("M-S-e" , sendToScreen def 1)
, ("M-S-r" , sendToScreen def 2)
, ("M-t" , withFocused $ windows . W.sink)
, ("M-C-l" , spawn "betterlockscreen -l --show-layout -u ~/.background-image.png")
, ("M-S-<Tab>" , spawn keyboardtoggle)
] ++
[(m ++ k, windows $ f w)
| (w, k) <- zip (XMonad.workspaces c) (map show $ [1..9] ++ [0]),
(m, f) <- [("M-", W.greedyView), ("M-S-", W.shift)]
] ++
[ layoutMap k l
| (k, l) <- [ ("u", "Full")
, ("i", "Grid")
, ("o", "Tall")
]
] ++
[ ("<XF86AudioMute>", spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle")
, ("<XF86AudioLowerVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ -5%")
, ("<XF86AudioRaiseVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ +5%")
, ("<XF86AudioMicMute>", spawn "pactl set-source-mute @DEFAULT_SOURCE@ toggle")
]
layoutMap :: String -> String -> (String, X ())
layoutMap k l = ("M-y M-" ++ k, sendMessage $ JumpToLayout (l :: String))
myHookManager = composeAll [ manageDocks
, className =? "Element" --> doShift "comm"
, className =? "firefox" --> doShift "web"
, className =? "thunderbird" --> doShift "comm"
, isFullscreen --> doFullFloat
, placeHook $ withGaps (32, 32, 32, 32) $ smart (0.5, 0.5)
, manageHook def
]
polybarHook :: D.Client -> PP polybarHook :: D.Client -> PP
polybarHook dbus = polybarHook dbus =
let wrapper c b "NSP" = mempty let wrapper c s | s /= "NSP" = wrap ("%{F" <> c <> "} ") " %{F-}" s
wrapper c (Just b) s = wrap ("%{F" <> c <> "}%{B" <> b <> "}") "%{F-}%{B-}" s | otherwise = mempty
wrapper c Nothing s = wrap ("%{F" <> c <> "}") "%{F-}" s blue = "#2E9AFE"
current = "#859900" gray = "#7F7F7F"
visible = "#eee8d5" orange = "#ea4300"
urgent = "#d33682" purple = "#9058c7"
highlighted = "#fdf6e3" red = "#722222"
title = "#657b83"
free = "#93a1a1"
in def { ppOutput = dbusOutput dbus in def { ppOutput = dbusOutput dbus
, ppCurrent = wrapper highlighted $ Just current , ppCurrent = wrapper blue
, ppVisible = wrapper title Nothing , ppVisible = wrapper gray
, ppUrgent = wrapper highlighted $ Just urgent , ppUrgent = wrapper orange
, ppHidden = wrapper free Nothing , ppHidden = wrapper gray
, ppHiddenNoWindows = mempty , ppHiddenNoWindows = wrapper red
, ppTitle = wrapper title Nothing . shorten 60 , ppTitle = shorten 100 . wrapper purple
} }
fadeHook :: Rational -> Rational -> X () fadeHook :: Rational -> Rational -> X ()
@ -154,8 +68,6 @@ fadeHook act inact = fadeOutLogHook $ fadeAllBut exceptions act inact
where exceptions = isFullscreen where exceptions = isFullscreen
<||> className =? "firefox" <||> className =? "firefox"
<||> className =? "Chromium-browser" <||> className =? "Chromium-browser"
<||> className =? "Emacs"
<||> className =? "thunderbird"
fadeAllBut :: Query Bool -> Rational -> Rational -> Query Rational fadeAllBut :: Query Bool -> Rational -> Rational -> Query Rational
fadeAllBut qry amt inact = do isInactive <- isUnfocused fadeAllBut qry amt inact = do isInactive <- isUnfocused
@ -166,4 +78,4 @@ fadeAllBut qry amt inact = do isInactive <- isUnfocused
then return inact then return inact
else return amt else return amt
polybarLogHook dbus = fadeHook 0.95 0.75 <+> dynamicLogWithPP (polybarHook dbus) polybarLogHook dbus = fadeHook 0.95 0.75 <+> dynamicLogWithPP (polybarHook dbus)

View File

@ -16,7 +16,6 @@
./nextcloud.nix ./nextcloud.nix
./polybar_i3.nix ./polybar_i3.nix
./polybar_xmonad.nix ./polybar_xmonad.nix
./xmonad.nix
./zsh.nix ./zsh.nix
./sway.nix ./sway.nix

View File

@ -1,40 +1,48 @@
{ config, pkgs, lib, nixosConfig, ... }: {
config,
pkgs,
lib,
nixosConfig,
...
}:
with lib; { with lib; {
config = let cfg = nixosConfig.elss.users.dunst; config = let
in mkIf cfg.enable { cfg = nixosConfig.elss.users.dunst;
services.dunst = { in
iconTheme = { mkIf cfg.enable {
package = pkgs.numix-icon-theme; services.dunst = {
name = "Numix"; iconTheme = {
size = "26"; package = pkgs.numix-icon-theme;
}; name = "Numix";
settings = { size = "26";
global = {
geometry = "800x5-30+50";
transparency = 10;
frame_color = "#839496";
font = "Hasklug Nerd Font 11";
timeout = 5;
follow = "mouse";
markup = "full";
icon_position = "left";
history_length = 32;
dmenu = "${pkgs.rofi}/bin/rofi -dmenu";
word_wrap = true;
}; };
urgency_critical = { settings = {
foreground = "#fdf6e3"; global = {
background = "#dc322f"; geometry = "800x5-30+50";
}; transparency = 10;
urgency_normal = { frame_color = "#839496";
foreground = "#fdf6e3"; font = "Hasklug Nerd Font 10";
background = "#859900"; timeout = 5;
}; follow = "mouse";
urgency_low = { markup = "full";
foreground = "#fdf6e3"; icon_position = "left";
background = "#2aa198"; history_length = 32;
dmenu = "${pkgs.rofi}/bin/rofi -dmenu";
word_wrap = true;
};
urgency_critical = {
foreground = "#fdf6e3";
background = "#dc322f";
};
urgency_normal = {
foreground = "#fdf6e3";
background = "#859900";
};
urgency_low = {
foreground = "#fdf6e3";
background = "#2aa198";
};
}; };
}; };
}; };
};
} }

View File

@ -1,132 +1,216 @@
{ config, pkgs, lib, nixosConfig, ... }: {
config,
pkgs,
lib,
nixosConfig,
...
}:
with lib; { with lib; {
config = let cfg = nixosConfig.elss.graphical.xmonad.polybar; config = let
in mkIf cfg.enable { cfg = nixosConfig.elss.graphical.xmonad.polybar;
services.polybar = { in
enable = true; mkIf cfg.enable {
package = pkgs.polybarFull; services.polybar = {
settings = let enable = true;
fonts = [ package = pkgs.polybarFull;
"Weather Icons:size=12;0" settings = let
"Hasklug Nerd Font,Hasklig Medium:style=Medium,Regular" fonts = [
"all-the-icons:style=Regular" "Hasklig:style=Regular"
"Webdings:style=Regular" "all-the-icons:style=Regular"
"Noto Emoji:scale=10" "Webdings:style=Regular"
"Unifont:style=Regular" "Noto Emoji:scale=10"
"Material Icons:size=12;0" "Unifont:style=Regular"
]; "Material Icons:size=12;0"
in { "Weather Icons:size=12;0"
"bar/main" = { "Hasklug Nerd Font,Hasklig Medium:style=Medium,Regular"
font = fonts; ];
modules = { in {
left = "xmonad"; "bar/main" = {
center = ""; font = fonts;
# right = "xbacklight xkeyboard eth wlan battery date powermenu dunst volume "; modules = {
right = "xkeyboard dunst battery date volume"; left = "xmonad";
}; center = "";
tray = { right = "xbacklight xkeyboard eth wlan battery date powermenu dunst volume ";
position = "right"; };
padding = 3; tray = {
position = "right";
padding = 2;
};
monitor = ''
''${env:MONITOR:}
'';
}; };
# background = "FFFFFF"; "bar/aux" = {
# foreground = "000000"; font = fonts;
modules = {
module-margin = 2; left = "xmonad";
center = "";
monitor = '' right = " xbacklight xkeyboard eth wlan battery date powermenu volume ";
''${env:MONITOR:} };
''; monitor = ''
}; ''${env:MONITOR:}
'';
"bar/aux" = { };
font = fonts;
modules = { "module/xmonad" = {
left = "xmonad"; type = "custom/script";
center = ""; exec = "${pkgs.xmonad-log} /bin/xmonad-log";
right = ""; tail = true;
};
"module/xkeyboard" = {
type = "internal/xkeyboard";
blacklist-0 = "num lock";
interval = "5";
format-prefix = ''""'';
label-layout = "%layout%";
label-indicator-padding = "2";
label-indicator-margin = "1";
};
"module/wlan" = {
type = "internal/network";
interface = "wlp0s20f3";
interval = "3.0";
format-connected = " <ramp-signal> <label-connected>";
format-connected-underline = "#9f78e1";
label-connected = "%essid%";
ramp-signal-0 = ''"0.0"'';
ramp-signal-1 = ''"0.5"'';
ramp-signal-2 = ''"1.0"'';
ramp-signal-3 = ''"1.0"'';
ramp-signal-4 = ''"1.0"'';
format-disconnected = "";
# ;format-disconnected = <label-disconnected>
#;format-disconnected-underline = ${self.format-connected-underline}
#;label-disconnected = %ifname% disconnected
#;label-disconnected-foreground = ${colors.foreground-alt}
};
"module/eth" = {
type = "internal/network";
interface = "eno1";
interval = "3.0";
format-connected-underline = "#55aa55";
format-connected = " <label-connected>";
label-connected = "%local_ip%";
format-disconnected = "";
format-disconnected-background = "#5479b7";
#;format-disconnected = <label-disconnected>
#;format-disconnected-underline = ${self.format-connected-underline}
#;label-disconnected = %ifname% disconnected
#;label-disconnected-foreground = ${colors.foreground-alt}
};
"module/date" = {
type = "internal/date";
interval = "5";
date = ''" %Y-%m-%d"'';
date-alt = ''" %Y-%m-%d"'';
time = "%H:%M";
time-alt = "%H:%M:%S";
#format-prefix = "";
#format-prefix-foreground = foreground_altcol;
format-underline = "#0a6cf5";
label = "%{A} %date% %time%";
};
"module/battery" = {
type = "internal/battery";
battery = "BAT0";
adapter = "ADP1";
full-at = "98";
format-charging-background = "#689d6a";
format-charging-prefix = ''" "'';
format-charging = "<label-charging>";
format-discharging-prefix = ''" "'';
format-discharging = "<label-discharging>";
format-discharging-background = "#689d6a";
format-full-prefix = ''" "'';
format-charging-underline = "#ffaa55";
format-full-underline = "#ffaa55";
ormat-full-padding = "1";
format-charging-padding = "1";
format-discharging-padding = "1";
};
"module/temperature" = {
type = "internal/temperature";
thermal-zone = "0";
warn-temperature = "60";
format = "<ramp> <label>";
format-underline = "#f50a4d";
format-warn = "<ramp> <label-warn>";
format-warn-underline = "#f50a4d";
label = " %temperature-c%";
label-warn = "%temperature-c%";
ramp-0 = "l";
ramp-1 = "m";
ramp-2 = "h";
};
"module/powermenu" = {
type = "custom/menu";
expand-right = "true";
format-spacing = "1";
label-open = ''""'';
label-close = " cancel";
label-separator = "|";
menu-0-0 = "reboot";
menu-0-0-exec = "menu-open-1";
menu-0-1 = "power off";
menu-0-1-exec = "menu-open-2";
menu-1-0 = "cancel";
menu-1-0-exec = "menu-open-0";
menu-1-1 = "reboot";
menu-1-1-exec = "sudo reboot";
menu-2-0 = "power off";
menu-2-0-exec = "sudo poweroff";
menu-2-1 = "cancel";
menu-2-1-exec = "menu-open-0";
};
"module/xbacklight" = {
type = "internal/xbacklight";
format = "<label> <bar>";
label = "BL";
};
"module/dunst" = {
type = "custom/script";
exec = "PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl is-paused | ${pkgs.gnugrep}/bin/grep -q true && echo || echo ";
interval = 10;
click-left = "PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl set-paused toggle";
}; };
monitor = ''
''${env:MONITOR:}
'';
};
"module/xmonad" = {
type = "custom/script";
exec = "${pkgs.xmonad-log}/bin/xmonad-log";
tail = true;
};
"module/dunst" = {
type = "custom/script";
exec =
"PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl is-paused | ${pkgs.gnugrep}/bin/grep -q true && echo || echo ";
interval = 10;
click-left =
"PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl set-paused toggle";
};
"module/volume" = {
type = "internal/pulseaudio";
format.volume = "<ramp-volume> <label-volume>";
label.muted.text = "🔇";
label.muted.foreground = "#666";
ramp.volume = [ "🔈" "🔉" "🔊" ];
click.right = "${pkgs.pavucontrol}/bin/pavucontrol &";
# format-volume-underline = Base2;
# format-muted-underline = Base2;
};
"module/xkeyboard" = {
type = "internal/xkeyboard";
blacklist-0 = "num lock";
interval = "5";
format-prefix = ''""'';
label-layout = "%layout%";
label-indicator-padding = "2";
label-indicator-margin = "1";
};
"module/battery" = {
type = "internal/battery";
battery = "BAT0";
adapter = "ADP1";
full-at = "98";
format-charging-prefix = ''" "'';
format-charging = "<label-charging>";
format-discharging-prefix = ''" "'';
format-discharging = "<label-discharging>";
format-full-prefix = ''" "'';
format-full-padding = "1";
format-charging-padding = "1";
format-discharging-padding = "1";
};
"module/date" = {
type = "internal/date";
interval = "5";
date = ''" %Y-%m-%d"'';
date-alt = ''" %Y-%m-%d"'';
time = "%H:%M";
time-alt = "%H:%M:%S";
label = "%{A} %date% %time%";
}; };
script = ''
for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do
MONITOR=$m polybar --reload main &
done;
for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep -v '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do
MONITOR=$m polybar --reload aux &
done;
'';
}; };
script = ''
for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do
MONITOR=$m polybar --reload main &
done;
for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep -v '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do
MONITOR=$m polybar --reload aux &
done;
'';
}; };
systemd.user.services.polybar = {
Install.WantedBy = [ "graphical-session.target" ];
};
};
} }

View File

@ -1,39 +1,37 @@
{ config, pkgs, lib, nixosConfig, ... }: {
config,
pkgs,
lib,
nixosConfig,
...
}:
with lib; { with lib; {
config = let cfg = nixosConfig.elss.graphical.xmonad; config = let
in mkIf cfg.enable { cfg = nixosConfig.elss.graphical.xmonad;
xsession = { in
windowManager.xmonad = { mkIf cfg.enable {
enable = true; xsession = {
enableContribAndExtras = true; windowManager.xmonad = {
extraPackages = hp: [ enable = true;
hp.dbus enableContribAndExtras = true;
hp.hostname enablePackages = hp: [
hp.monad-logger hp.dbus
hp.xmonad-contrib hp.monad-logger
]; hp.xmonad-contrib
libFiles."ELSS.hs" = pkgs.writeText "ELSS.hs" '' ];
module ELSS where config = conf/xmonad/xmonad.hs;
keyboardtoggle = "${conf/keyboard/keyboard_layout_toggle.sh}" };
'';
config = conf/xmonad/xmonad.hs;
}; };
}; services = {
betterlockscreen = {
services = { enable = true;
betterlockscreen = { inactiveInterval = 10;
enable = true; };
inactiveInterval = 10; picom = {
}; enable = true;
picom = { backend = "glx";
enable = true; };
backend = "glx";
}; };
}; };
gtk.enable = true;
home.packages = with pkgs; [ rofi polybarFull firefox pulseaudioFull ];
};
} }