From dea9a66fccca94ed27387246e384f3dcb20501f6 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sat, 5 May 2018 13:02:04 +0200 Subject: Basic attempt at a better structure --- conf/kitty.conf | 31 ------ conf/pwmt/zathurarc | 16 --- conf/urxvt.Xresources | 54 ---------- conf/xdg/user-dirs.dirs | 3 - conf/xmonad/xmonad.hs | 184 -------------------------------- gui/conf/xmonad.hs | 184 ++++++++++++++++++++++++++++++++ gui/default.nix | 57 ++++++++++ gui/gtk.nix | 54 ++++++++++ gui/kitty.nix | 41 +++++++ gui/pcmanfm.nix | 17 +++ gui/pkgs/oomox-archdroid-icon-theme.nix | 29 +++++ gui/pkgs/oomox-gtk-theme.nix | 60 +++++++++++ gui/rofi.nix | 55 ++++++++++ gui/urxvt.nix | 62 +++++++++++ gui/vim.nix | 21 ++++ gui/xmonad.nix | 9 ++ gui/zathura.nix | 26 +++++ home.nix | 179 +------------------------------ pkgs/oomox-archdroid-icon-theme.nix | 29 ----- pkgs/oomox-gtk-theme.nix | 60 ----------- 20 files changed, 619 insertions(+), 552 deletions(-) delete mode 100644 conf/kitty.conf delete mode 100644 conf/pwmt/zathurarc delete mode 100644 conf/urxvt.Xresources delete mode 100644 conf/xdg/user-dirs.dirs delete mode 100644 conf/xmonad/xmonad.hs create mode 100644 gui/conf/xmonad.hs create mode 100644 gui/default.nix create mode 100644 gui/gtk.nix create mode 100644 gui/kitty.nix create mode 100644 gui/pcmanfm.nix create mode 100644 gui/pkgs/oomox-archdroid-icon-theme.nix create mode 100644 gui/pkgs/oomox-gtk-theme.nix create mode 100644 gui/rofi.nix create mode 100644 gui/urxvt.nix create mode 100644 gui/vim.nix create mode 100644 gui/xmonad.nix create mode 100644 gui/zathura.nix delete mode 100644 pkgs/oomox-archdroid-icon-theme.nix delete mode 100644 pkgs/oomox-gtk-theme.nix diff --git a/conf/kitty.conf b/conf/kitty.conf deleted file mode 100644 index 29c1362..0000000 --- a/conf/kitty.conf +++ /dev/null @@ -1,31 +0,0 @@ -font_family iosevka -font_size 10 -font_size_delta 1 -adjust_line_height 110% - -background #161616 -foreground #F2F2F2 -# black -color0 #161616 -color8 #F2F2F2 -# red -color1 #8C3346 -color9 #ff0000 -# green -color2 #aadb0f -color10 #909636 -# yellow -color3 #E4E093 -color11 #ffff00 -# blue -color4 #352F6A -color12 #0000ff -# magenta -color5 #ce5c00 -color13 #f57900 -# cyan -color6 #89b6e2 -color14 #46a4ff -# white -color7 #F2F2F2 -color15 #ffffff diff --git a/conf/pwmt/zathurarc b/conf/pwmt/zathurarc deleted file mode 100644 index 3258fe6..0000000 --- a/conf/pwmt/zathurarc +++ /dev/null @@ -1,16 +0,0 @@ -set font "Iosevka 14px" - -set inputbar-bg "#161616" -set inputbar-fg "#909737" - -set statusbar-bg "#161616" -set statusbar-fg "#909737" - -set completion-bg "#161616" -set completion-fg "#909737" - -set completion-highlight-bg "#909737" -set completion-highlight-fg "#161616" - -set recolor-lightcolor "#161616" -set recolor-darkcolor "#ffffff" diff --git a/conf/urxvt.Xresources b/conf/urxvt.Xresources deleted file mode 100644 index 5cab29d..0000000 --- a/conf/urxvt.Xresources +++ /dev/null @@ -1,54 +0,0 @@ -URxvt.saveLines: 10000 -URxvt.scrollBar: false -URxvt.font: xft:Iosevka:pixelsize=12 -URxvt.letterSpace: 0 -URxvt.transparent: false -URxvt.inheritPixmap: false -URxvt.fading: 20 -URxvt.dynamicColors: on - -URxvt.perl-ext-common: default,matcher,clipboard,resize-font -URxvt.matcher.button: 1 -URxvt.matcher.pattern.1: \\bwww\\.[\\w-]\\.[\\w./?&@#-]*[\\w/-] -URxvt.url-launcher: firefox - -URxvt.keysym.Control-Up: \033[1;5A -URxvt.keysym.Control-Down: \033[1;5B -URxvt.keysym.Control-Left: \033[1;5D -URxvt.keysym.Control-Right: \033[1;5C - -URxvt.keysym.M-Down: \033[1;3B -URxvt.keysym.M-Up: \033[1;3A -URxvt.keysym.M-Left: \033[1;3D -URxvt.keysym.M-Right: \033[1;3C - -URxvt.keysym.M-c: perl:clipboard:copy -URxvt.keysym.M-v: perl:clipboard:paste - -URxvt.background: #161616 -URxvt.foreground: #F2F2F2 - -! black -URxvt.color0: #161616 -URxvt.color8: #F2F2F2 -! red -URxvt.color1: #8C3346 -URxvt.color9: #ff0000 -! green -URxvt.color2: #aadb0f -URxvt.color10: #909636 -! yellow -URxvt.color3: #E4E093 -URxvt.color11: #ffff00 -! blue -URxvt.color4: #352F6A -URxvt.color12: #0000ff -! magenta -URxvt.color5: #ce5c00 -URxvt.color13: #f57900 -! cyan -URxvt.color6: #89b6e2 -URxvt.color14: #46a4ff -! white -URxvt.color7: #F2F2F2 -URxvt.color15: #ffffff diff --git a/conf/xdg/user-dirs.dirs b/conf/xdg/user-dirs.dirs deleted file mode 100644 index 9088276..0000000 --- a/conf/xdg/user-dirs.dirs +++ /dev/null @@ -1,3 +0,0 @@ -XDG_TEMPLATES_DIR="$HOME/" -XDG_DESKTOP_DIR="$HOME/" -XDG_DOWNLOADS_DIR="$HOME/downloads/" diff --git a/conf/xmonad/xmonad.hs b/conf/xmonad/xmonad.hs deleted file mode 100644 index f42ec34..0000000 --- a/conf/xmonad/xmonad.hs +++ /dev/null @@ -1,184 +0,0 @@ -import XMonad -import XMonad.Util.EZConfig -import XMonad.StackSet - -import XMonad.Hooks.EwmhDesktops - -import XMonad.Layout.NoBorders -import XMonad.Layout.Tabbed -import XMonad.Layout.Reflect - -import XMonad.Util.Themes -import XMonad.Util.NamedScratchpad - -import XMonad.Actions.SpawnOn -import XMonad.Actions.CycleWS -import XMonad.Actions.WindowBringer -import XMonad.Actions.GroupNavigation -import XMonad.Actions.FloatKeys - -import System.Exit -import Data.Maybe -import Control.Monad (when) -import qualified Data.Map as M - -workspaces :: [WorkspaceId] -workspaces = map show [1 .. 9 :: Int] - -customTabTheme = (theme xmonadTheme) - { fontName = "xft:Iosevka Medium-12" - , decoHeight = 20 - , activeTextColor = "#222222" - , activeColor = "#909737" - , inactiveTextColor = "#999999" - , inactiveColor = "#161616" - , activeBorderColor = "#909737" - , inactiveBorderColor = "#161616" } - -availableLayouts = smartBorders $ tabs ||| tilesLM ||| tilesRM ||| tilesTM ||| tilesBM - where - tabs = tabbed shrinkText customTabTheme - tilesLM = Tall 1 delta ratio - tilesRM = reflectHoriz tilesLM - tilesTM = Mirror tilesLM - tilesBM = reflectVert tilesTM - ratio = 1/2 - delta = 3/100 - -windowBringerDmenuConfig = def { menuCommand = "rofi" - , menuArgs = [ "-p", "win", "-dmenu", "-i" ] } - -floatRectTop h = hideScreenBorder $ RationalRect (1/20) 0 (18/20) h -floatRectBottom h = hideScreenBorder $ RationalRect (1/20) (1-h) (18/20) h -floatRectLeft w = hideScreenBorder $ RationalRect 0 (1/20) w (18/20) -floatRectRight w = hideScreenBorder $ RationalRect (1-w) (1/20) w (18/20) - -dropUp = floatRectBottom $ 2/3 -dropUpLarge = floatRectBottom $ 18/20 -dropDown = floatRectTop $ 2/3 -dropDownLarge = floatRectTop $ 18/20 -sideBarLeft = floatRectLeft $ 1/2 -sideBarRight = floatRectRight $ 1/2 - -scratchpads = [ NS "terminal" "kitty --class=scratchterm" (className =? "scratchterm") - (customFloating dropDown) - , NS "browser" "firefox" (className =? "Firefox") - (customFloating dropDown) - , NS "documentation" "zeal" (className =? "Zeal") - (customFloating dropDown) - , NS "messaging" "telegram-desktop" (className =? "TelegramDesktop") - (customFloating sideBarRight) ] - -keybindings = --- xmonad session control - [ ("C-M1-" , io (exitWith ExitSuccess)) - , ("C-M1-" , spawn "xmonad --restart") --- application launchers - , ("M-" , spawn "rofi -show combi") - , ("M-" , spawn "kitty") - , ("M-S-" , spawn "vim -g") --- window management - , ("M-q" , windows $ shift "NSP") - , ("M-S-q" , kill) - , ("M-j" , windows focusDown) - , ("M-k" , windows focusUp) - , ("M-S-j" , windows swapDown) - , ("M-S-k" , windows swapUp) - , ("M-h" , sendMessage Shrink) - , ("M-l" , sendMessage Expand) - , ("M-" , nextMatch History (return True)) --- window bringer - , ("M-a" , gotoMenuConfig windowBringerDmenuConfig) - , ("M-S-a" , bringMenuConfig windowBringerDmenuConfig) --- scratchpads - , ("M-b" , namedScratchpadAction scratchpads "browser") - , ("M-d" , namedScratchpadAction scratchpads "documentation") - , ("M-m" , namedScratchpadAction scratchpads "messaging") ] ++ --- workspace selection - [ (p ++ [k] , windows $ f i) | (i, k) <- zip Main.workspaces ['1' .. '9'] - , (p, f) <- [ ("M-" , greedyView) - , ("M-S-" , shift) ] ] ++ --- workspace management - [ ("M-s l" , sendMessage NextLayout) - , ("M-s p" , toggleWS' ["NSP"]) - , ("M-s j" , moveTo Next nonEmptyWS) - , ("M-s k" , moveTo Prev nonEmptyWS) - , ("M-S-s j" , shiftTo Next nonEmptyWS >> moveTo Next nonEmptyWS) - , ("M-S-s k" , shiftTo Prev nonEmptyWS >> moveTo Prev nonEmptyWS) --- floating placement - , ("M-w t" , withFocused $ windows . sink) - , ("M-w f" , withFocused $ placeFloating $ RationalRect 0 0 1 1) - , ("M-w j" , withFocused $ placeFloating dropUp) - , ("M-w S-j" , withFocused $ placeFloating dropUpLarge) - , ("M-w k" , withFocused $ placeFloating dropDown) - , ("M-w S-k" , withFocused $ placeFloating dropDownLarge) - , ("M-w h" , withFocused $ placeFloating sideBarLeft) - , ("M-w l" , withFocused $ placeFloating sideBarRight) --- system control - , ("M-c " , spawn "amixer sset Master 10%+") - , ("M-c " , spawn "amixer sset Master 10%-") - , ("M-c m" , spawn "amixer sset Master toggle") ] - -customEventHook = do - handleEventHook defaultConfig - fullscreenEventHook - -customLogHook = do - historyHook - customizeBorderWhen (isFloat <&&> isNotFullscreen) "#aadb0f" 6 - -main = xmonad $ ewmh - $ defaultConfig - { modMask = mod4Mask -- super key as modifier - , borderWidth = 3 - , normalBorderColor = "#161616" - , focusedBorderColor = "#909737" - , keys = \c -> mkKeymap c keybindings - , startupHook = return () >> checkKeymap defaultConfig keybindings - , handleEventHook = customEventHook - , layoutHook = availableLayouts - , manageHook = namedScratchpadManageHook scratchpads - , logHook = customLogHook } - `additionalKeys` - [ ((noModMask, xK_Menu) , namedScratchpadAction scratchpads "terminal") ] - -nonEmptyWS = WSIs $ return (\w -> nonNSP w && nonEmpty w) - where nonNSP (Workspace tag _ _) = tag /= "NSP" - nonEmpty = isJust . stack - -placeFloating :: RationalRect -> Window -> X () -placeFloating rect = windows . (flip XMonad.StackSet.float $ rect) - -windowSize w = do - r <- withDisplay $ (\d -> io $ getWindowAttributes d w) - return (fromIntegral $ wa_width r, fromIntegral $ wa_height r) - -withCurrentScreen f = withWindowSet $ \ws -> f (current ws) -withCurrentScreenRect f = withCurrentScreen $ \s -> f (screenRect (screenDetail s)) - -screenResolution = withCurrentScreenRect $ \r -> return (rect_width r, rect_height r) - -isNotFullscreen :: Query Bool -isNotFullscreen = ask >>= (\w -> liftX $ do (ww, wh) <- windowSize w - (sw, sh) <- screenResolution - return $ not (ww == sw && wh == sh)) - -isFloat :: Query Bool -isFloat = ask >>= (\w -> liftX $ withWindowSet $ \ws -> return $ (M.member w (floating ws))) - -customizeBorderWhen :: Query Bool -> String -> Dimension -> X () -customizeBorderWhen q color width = withFocused $ \w -> runQuery q w >>= flip when (setWindowBorder' color width w) - -setWindowBorder' :: String -> Dimension -> Window -> X () -setWindowBorder' color width window = do - XConf { display = d } <- ask - ~(Just pixel) <- io $ initColor d color - io $ setWindowBorder d window pixel - io $ setWindowBorderWidth d window width - --- ugly hack to hide window border at screen boundary -hideScreenBorder :: RationalRect -> RationalRect -hideScreenBorder (RationalRect x0 y0 w h) = RationalRect (x0-(bw/sw)) (y0-(bw/sh)) (w+((2*bw)/sw)) (h+((2*bw+1)/sh)) - where bw = 6 - sw = 1280 - sh = 1024 diff --git a/gui/conf/xmonad.hs b/gui/conf/xmonad.hs new file mode 100644 index 0000000..46547eb --- /dev/null +++ b/gui/conf/xmonad.hs @@ -0,0 +1,184 @@ +import XMonad +import XMonad.Util.EZConfig +import XMonad.StackSet + +import XMonad.Hooks.EwmhDesktops + +import XMonad.Layout.NoBorders +import XMonad.Layout.Tabbed +import XMonad.Layout.Reflect + +import XMonad.Util.Themes +import XMonad.Util.NamedScratchpad + +import XMonad.Actions.SpawnOn +import XMonad.Actions.CycleWS +import XMonad.Actions.WindowBringer +import XMonad.Actions.GroupNavigation +import XMonad.Actions.FloatKeys + +import System.Exit +import Data.Maybe +import Control.Monad (when) +import qualified Data.Map as M + +workspaces :: [WorkspaceId] +workspaces = map show [1 .. 9 :: Int] + +customTabTheme = (theme xmonadTheme) + { fontName = "xft:Iosevka Medium-12" + , decoHeight = 20 + , activeTextColor = "#222222" + , activeColor = "#909737" + , inactiveTextColor = "#999999" + , inactiveColor = "#161616" + , activeBorderColor = "#909737" + , inactiveBorderColor = "#161616" } + +availableLayouts = smartBorders $ tabs ||| tilesLM ||| tilesRM ||| tilesTM ||| tilesBM + where + tabs = tabbed shrinkText customTabTheme + tilesLM = Tall 1 delta ratio + tilesRM = reflectHoriz tilesLM + tilesTM = Mirror tilesLM + tilesBM = reflectVert tilesTM + ratio = 1/2 + delta = 3/100 + +windowBringerDmenuConfig = def { menuCommand = "rofi" + , menuArgs = [ "-p", "win", "-dmenu", "-i" ] } + +floatRectTop h = hideScreenBorder $ RationalRect (1/20) 0 (18/20) h +floatRectBottom h = hideScreenBorder $ RationalRect (1/20) (1-h) (18/20) h +floatRectLeft w = hideScreenBorder $ RationalRect 0 (1/20) w (18/20) +floatRectRight w = hideScreenBorder $ RationalRect (1-w) (1/20) w (18/20) + +dropUp = floatRectBottom $ 2/3 +dropUpLarge = floatRectBottom $ 18/20 +dropDown = floatRectTop $ 2/3 +dropDownLarge = floatRectTop $ 18/20 +sideBarLeft = floatRectLeft $ 1/2 +sideBarRight = floatRectRight $ 1/2 + +scratchpads = [ NS "terminal" "kitty --class=scratchterm" (className =? "scratchterm") + (customFloating dropDown) + , NS "browser" "firefox" (className =? "Firefox") + (customFloating dropDownLarge) + , NS "documentation" "zeal" (className =? "Zeal") + (customFloating dropDown) + , NS "messaging" "telegram-desktop" (className =? "TelegramDesktop") + (customFloating sideBarRight) ] + +keybindings = +-- xmonad session control + [ ("C-M1-" , io (exitWith ExitSuccess)) + , ("C-M1-" , spawn "xmonad --restart") +-- application launchers + , ("M-" , spawn "rofi -show combi") + , ("M-" , spawn "kitty") + , ("M-S-" , spawn "vim -g") +-- window management + , ("M-q" , windows $ shift "NSP") + , ("M-S-q" , kill) + , ("M-j" , windows focusDown) + , ("M-k" , windows focusUp) + , ("M-S-j" , windows swapDown) + , ("M-S-k" , windows swapUp) + , ("M-h" , sendMessage Shrink) + , ("M-l" , sendMessage Expand) + , ("M-" , nextMatch History (return True)) +-- window bringer + , ("M-a" , gotoMenuConfig windowBringerDmenuConfig) + , ("M-S-a" , bringMenuConfig windowBringerDmenuConfig) +-- scratchpads + , ("M-b" , namedScratchpadAction scratchpads "browser") + , ("M-d" , namedScratchpadAction scratchpads "documentation") + , ("M-m" , namedScratchpadAction scratchpads "messaging") ] ++ +-- workspace selection + [ (p ++ [k] , windows $ f i) | (i, k) <- zip Main.workspaces ['1' .. '9'] + , (p, f) <- [ ("M-" , greedyView) + , ("M-S-" , shift) ] ] ++ +-- workspace management + [ ("M-s l" , sendMessage NextLayout) + , ("M-s p" , toggleWS' ["NSP"]) + , ("M-s j" , moveTo Next nonEmptyWS) + , ("M-s k" , moveTo Prev nonEmptyWS) + , ("M-S-s j" , shiftTo Next nonEmptyWS >> moveTo Next nonEmptyWS) + , ("M-S-s k" , shiftTo Prev nonEmptyWS >> moveTo Prev nonEmptyWS) +-- floating placement + , ("M-w t" , withFocused $ windows . sink) + , ("M-w f" , withFocused $ placeFloating $ RationalRect 0 0 1 1) + , ("M-w j" , withFocused $ placeFloating dropUp) + , ("M-w S-j" , withFocused $ placeFloating dropUpLarge) + , ("M-w k" , withFocused $ placeFloating dropDown) + , ("M-w S-k" , withFocused $ placeFloating dropDownLarge) + , ("M-w h" , withFocused $ placeFloating sideBarLeft) + , ("M-w l" , withFocused $ placeFloating sideBarRight) +-- system control + , ("M-c " , spawn "amixer sset Master 10%+") + , ("M-c " , spawn "amixer sset Master 10%-") + , ("M-c m" , spawn "amixer sset Master toggle") ] + +customEventHook = do + handleEventHook defaultConfig + fullscreenEventHook + +customLogHook = do + historyHook + customizeBorderWhen (isFloat <&&> isNotFullscreen) "#aadb0f" 6 + +main = xmonad $ ewmh + $ defaultConfig + { modMask = mod4Mask -- super key as modifier + , borderWidth = 3 + , normalBorderColor = "#161616" + , focusedBorderColor = "#909737" + , keys = \c -> mkKeymap c keybindings + , startupHook = return () >> checkKeymap defaultConfig keybindings + , handleEventHook = customEventHook + , layoutHook = availableLayouts + , manageHook = namedScratchpadManageHook scratchpads + , logHook = customLogHook } + `additionalKeys` + [ ((noModMask, xK_Menu) , namedScratchpadAction scratchpads "terminal") ] + +nonEmptyWS = WSIs $ return (\w -> nonNSP w && nonEmpty w) + where nonNSP (Workspace tag _ _) = tag /= "NSP" + nonEmpty = isJust . stack + +placeFloating :: RationalRect -> Window -> X () +placeFloating rect = windows . (flip XMonad.StackSet.float $ rect) + +windowSize w = do + r <- withDisplay $ (\d -> io $ getWindowAttributes d w) + return (fromIntegral $ wa_width r, fromIntegral $ wa_height r) + +withCurrentScreen f = withWindowSet $ \ws -> f (current ws) +withCurrentScreenRect f = withCurrentScreen $ \s -> f (screenRect (screenDetail s)) + +screenResolution = withCurrentScreenRect $ \r -> return (rect_width r, rect_height r) + +isNotFullscreen :: Query Bool +isNotFullscreen = ask >>= (\w -> liftX $ do (ww, wh) <- windowSize w + (sw, sh) <- screenResolution + return $ not (ww == sw && wh == sh)) + +isFloat :: Query Bool +isFloat = ask >>= (\w -> liftX $ withWindowSet $ \ws -> return $ (M.member w (floating ws))) + +customizeBorderWhen :: Query Bool -> String -> Dimension -> X () +customizeBorderWhen q color width = withFocused $ \w -> runQuery q w >>= flip when (setWindowBorder' color width w) + +setWindowBorder' :: String -> Dimension -> Window -> X () +setWindowBorder' color width window = do + XConf { display = d } <- ask + ~(Just pixel) <- io $ initColor d color + io $ setWindowBorder d window pixel + io $ setWindowBorderWidth d window width + +-- ugly hack to hide window border at screen boundary +hideScreenBorder :: RationalRect -> RationalRect +hideScreenBorder (RationalRect x0 y0 w h) = RationalRect (x0-(bw/sw)) (y0-(bw/sh)) (w+((2*bw)/sw)) (h+((2*bw+1)/sh)) + where bw = 6 + sw = 1280 + sh = 1024 diff --git a/gui/default.nix b/gui/default.nix new file mode 100644 index 0000000..2d27f7c --- /dev/null +++ b/gui/default.nix @@ -0,0 +1,57 @@ +{ pkgs, ... }: + +{ + home = { + packages = with pkgs; [ + # file viewers + sxiv + mpv + paraview + libreoffice + # communication + thunderbird + tdesktop + # UI dev utilities (CLI utilities are added in project specific nix-shells) + zeal + hotspot + qcachegrind + gitg + ]; + + file.".config/user-dirs.dirs".text = '' + XDG_TEMPLATES_DIR="$HOME/" + XDG_DESKTOP_DIR="$HOME/" + XDG_DOWNLOADS_DIR="$HOME/downloads/" + ''; + }; + + xsession = { + enable = true; + initExtra = '' + xsetroot -cursor_name left_ptr + xset b off + ''; + }; + + imports = [ + # desktop environment + ./xmonad.nix + ./rofi.nix + ./gtk.nix + # terminals + ./kitty.nix + ./urxvt.nix + # tools + ./vim.nix + ./pcmanfm.nix + # file viewers + ./zathura.nix + ]; + + services.syncthing.enable = true; + + programs.firefox = { + enable = true; + enableAdobeFlash = true; + }; +} diff --git a/gui/gtk.nix b/gui/gtk.nix new file mode 100644 index 0000000..0a580f5 --- /dev/null +++ b/gui/gtk.nix @@ -0,0 +1,54 @@ +{ pkgs, ... }: + +{ + gtk = { + enable = true; + + theme = let + oomox-gtk-theme = pkgs.callPackage ./pkgs/oomox-gtk-theme.nix { + pkgs-unstable = import {}; + theme = { + accent_bg = "aadb0f"; + bg = "d8d8d8"; + fg = "101010"; + btn_bg = "f5f5f5"; + btn_fg = "111111"; + caret_size = 0.04; + caret1_fg = "101010"; + caret2_fg = "101010"; + hdr_btn_bg = "161616"; + hdr_btn_fg = "aadb0f"; + menu_bg = "909737"; + menu_fg = "1a1a1a"; + sel_bg = "aadb0f"; + sel_fg = "101010"; + txt_bg = "ffffff"; + txt_fg = "101010"; + gradient = 0.0; + roundness = 0; + spacing = 1; + wm_border_focus = "909737"; + wm_border_unfocus = "909737"; + gtk3_generate_dark = false; + }; + }; + in { + name = "oomox"; + package = oomox-gtk-theme; + }; + + iconTheme = let + oomox-archdroid-icon-theme = pkgs.callPackage ./pkgs/oomox-archdroid-icon-theme.nix { + color = "909737"; + }; + in { + name = "oomox-archdroid"; + package = oomox-archdroid-icon-theme; + }; + + font = { + name = "Iosevka 10"; + package = pkgs.iosevka; + }; + }; +} diff --git a/gui/kitty.nix b/gui/kitty.nix new file mode 100644 index 0000000..46abef2 --- /dev/null +++ b/gui/kitty.nix @@ -0,0 +1,41 @@ +{ pkgs, ... }: + +{ + home = { + packages = [ pkgs.kitty ]; + + file.".config/kitty/kitty.conf".text = '' + font_family iosevka + font_size 10 + font_size_delta 1 + adjust_line_height 110% + + background #161616 + foreground #F2F2F2 + # black + color0 #161616 + color8 #F2F2F2 + # red + color1 #8C3346 + color9 #ff0000 + # green + color2 #aadb0f + color10 #909636 + # yellow + color3 #E4E093 + color11 #ffff00 + # blue + color4 #352F6A + color12 #0000ff + # magenta + color5 #ce5c00 + color13 #f57900 + # cyan + color6 #89b6e2 + color14 #46a4ff + # white + color7 #F2F2F2 + color15 #ffffff + ''; + }; +} diff --git a/gui/pcmanfm.nix b/gui/pcmanfm.nix new file mode 100644 index 0000000..00a1393 --- /dev/null +++ b/gui/pcmanfm.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: + +{ + home = { + packages = with pkgs; [ + pcmanfm gvfs lxmenu-data shared_mime_info + veracrypt + ]; + + sessionVariables = { + # required to enable auto-mounting in pcmanfm + GIO_EXTRA_MODULES = [ "${pkgs.gvfs}/lib/gio/modules" ]; + # use GTK theme in libreoffice + SAL_USE_VCLPLUGIN = "gtk"; + }; + }; +} diff --git a/gui/pkgs/oomox-archdroid-icon-theme.nix b/gui/pkgs/oomox-archdroid-icon-theme.nix new file mode 100644 index 0000000..764bf2f --- /dev/null +++ b/gui/pkgs/oomox-archdroid-icon-theme.nix @@ -0,0 +1,29 @@ +{ stdenv, pkgs, color, ... }: + +stdenv.mkDerivation rec { + name = "oomox-archdroid-icon-theme"; + + src = pkgs.fetchFromGitHub { + repo = "archdroid-icon-theme"; + owner = "themix-project"; + rev = "6dc4c92689ea2ce99534d6f461283efdf8ffd270"; + sha256 = "073iwaamzrmj0l6h4gzmbnmazq16lgpc027mr3l778b35qwwraq5"; + }; + + postPatch = '' + patchShebangs . + ''; + + installPhase = '' + HOME="$out/share/icons" + sed -i "66s/\.icons\///" change_color.sh + ./change_color.sh --output oomox-archdroid --color ${color} + ''; + + meta = { + description = "oomox-archdroid-icon-theme is a customizable fork of archdroid-icon-theme"; + homepage = https://github.com/themix-project/archdroid-icon-theme; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/gui/pkgs/oomox-gtk-theme.nix b/gui/pkgs/oomox-gtk-theme.nix new file mode 100644 index 0000000..6e217dd --- /dev/null +++ b/gui/pkgs/oomox-gtk-theme.nix @@ -0,0 +1,60 @@ +{ stdenv, pkgs, pkgs-unstable, theme, ... }: + +stdenv.mkDerivation rec { + name = "oomox-gtk-theme"; + + src = pkgs.fetchFromGitHub { + repo = "oomox-gtk-theme"; + owner = "themix-project"; + rev = "aa9081b2899d7e8ba8ae47543173d2d9f0f13921"; + sha256 = "1yxhd6d61npx43qwa6gyvrwmivv42k3d6qn54q276aihwxlbgj4r"; + }; + + nativeBuildInputs = with pkgs; [ librsvg glib libxml2 gdk_pixbuf bc pkgs-unstable.sass pkgs-unstable.sassc ]; + propagatedUserEnvPkgs = with pkgs; [ gtk-engine-murrine ]; + + config = with theme; '' + ACCENT_BG=${accent_bg} + BG=${bg} + FG=${fg} + BTN_BG=${btn_bg} + BTN_FG=${btn_fg} + CARET1_FG=${caret1_fg} + CARET2_FG=${caret2_fg} + HDR_BTN_BG=${hdr_btn_bg} + HDR_BTN_FG=${hdr_btn_fg} + MENU_BG=${menu_bg} + MENU_FG=${menu_fg} + SEL_BG=${sel_bg} + SEL_FG=${sel_fg} + TXT_BG=${txt_bg} + TXT_FG=${txt_fg} + WM_BORDER_FOCUS=${wm_border_focus} + WM_BORDER_UNFOCUS=${wm_border_unfocus} + GTK3_GENERATE_DARK=${if gtk3_generate_dark then "True" else "False"} + CARET_SIZE=${toString caret_size} + GRADIENT=${toString gradient} + ROUNDNESS=${toString roundness} + SPACING=${toString spacing} + ''; + + postPatch = '' + patchShebangs . + ''; + + buildPhase = '' + HOME="$out/share/themes/oomox" + ./change_color.sh --make-opts all --target-dir "$out/share/themes" --output oomox <(echo -e "${config}") + ''; + + installPhase = '' + cd oomox-gtk-theme-* + ''; + + meta = { + description = "oomox-gtk-theme is a customizable fork of numix-gtk-theme."; + homepage = https://github.com/themix-project/oomox-gtk-theme; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/gui/rofi.nix b/gui/rofi.nix new file mode 100644 index 0000000..f2a9eca --- /dev/null +++ b/gui/rofi.nix @@ -0,0 +1,55 @@ +{ pkgs, ... }: + +{ + programs.rofi = { + enable = true; + location = "top"; + font = "Iosevka 12"; + separator = "none"; + scrollbar = false; + borderWidth = 6; + yoffset = -6; + + colors = { + window = { + background = "#222222"; + border = "#aadb0f"; + separator = "#000000"; + }; + rows = { + normal = { + background = "#222222"; + foreground = "#8e8e8e"; + backgroundAlt = "#161616"; + highlight = { + background = "#111111"; + foreground = "#aadb0f"; + }; + }; + active = { + background = "#222222"; + foreground = "#8e8e8e"; + backgroundAlt = "#161616"; + highlight = { + background = "#111111"; + foreground = "#aadb0f"; + }; + }; + urgent = { + background = "#222222"; + foreground = "#dc322f"; + backgroundAlt = "#161616"; + highlight = { + background = "#dc322f"; + foreground = "#161616"; + }; + }; + }; + }; + + extraConfig = '' + rofi.modi: combi + rofi.combi-modi: windowcd,drun,ssh + ''; + }; +} diff --git a/gui/urxvt.nix b/gui/urxvt.nix new file mode 100644 index 0000000..408d5d5 --- /dev/null +++ b/gui/urxvt.nix @@ -0,0 +1,62 @@ +{ pkgs, ... }: + +{ + home.packages = [ pkgs.rxvt_unicode ]; + + xresources.extraConfig = '' + URxvt.saveLines: 10000 + URxvt.scrollBar: false + URxvt.font: xft:Iosevka:pixelsize=12 + URxvt.letterSpace: 0 + URxvt.transparent: false + URxvt.inheritPixmap: false + URxvt.fading: 20 + URxvt.dynamicColors: on + + URxvt.perl-ext-common: default,matcher,clipboard,resize-font + URxvt.matcher.button: 1 + URxvt.matcher.pattern.1: \\bwww\\.[\\w-]\\.[\\w./?&@#-]*[\\w/-] + URxvt.url-launcher: firefox + + URxvt.keysym.Control-Up: \033[1;5A + URxvt.keysym.Control-Down: \033[1;5B + URxvt.keysym.Control-Left: \033[1;5D + URxvt.keysym.Control-Right: \033[1;5C + + URxvt.keysym.M-Down: \033[1;3B + URxvt.keysym.M-Up: \033[1;3A + URxvt.keysym.M-Left: \033[1;3D + URxvt.keysym.M-Right: \033[1;3C + + URxvt.keysym.M-c: perl:clipboard:copy + URxvt.keysym.M-v: perl:clipboard:paste + + URxvt.background: #161616 + URxvt.foreground: #F2F2F2 + + ! black + URxvt.color0: #161616 + URxvt.color8: #F2F2F2 + ! red + URxvt.color1: #8C3346 + URxvt.color9: #ff0000 + ! green + URxvt.color2: #aadb0f + URxvt.color10: #909636 + ! yellow + URxvt.color3: #E4E093 + URxvt.color11: #ffff00 + ! blue + URxvt.color4: #352F6A + URxvt.color12: #0000ff + ! magenta + URxvt.color5: #ce5c00 + URxvt.color13: #f57900 + ! cyan + URxvt.color6: #89b6e2 + URxvt.color14: #46a4ff + ! white + URxvt.color7: #F2F2F2 + URxvt.color15: #ffffff + ''; +} diff --git a/gui/vim.nix b/gui/vim.nix new file mode 100644 index 0000000..1b2c4db --- /dev/null +++ b/gui/vim.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: + +{ + home = { + # vim is configured globally for all users but common is the only GUI user + file.".gvimrc".text = '' + set guifont=Iosevka\ 10 + set linespace=2 + set guioptions=agim + set guioptions-=m + 2match SpecialKeyTab /\t/ + ''; + }; + + gtk = { + gtk2.extraConfig = '' + style "vimfix" { bg[NORMAL] = "#161616" } + widget "vim-main-window.*GtkForm" style "vimfix" + ''; + }; +} diff --git a/gui/xmonad.nix b/gui/xmonad.nix new file mode 100644 index 0000000..85f86c2 --- /dev/null +++ b/gui/xmonad.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + xsession.windowManager.xmonad = { + enable = true; + enableContribAndExtras = true; + config = ./conf/xmonad.hs; + }; +} diff --git a/gui/zathura.nix b/gui/zathura.nix new file mode 100644 index 0000000..41eefbc --- /dev/null +++ b/gui/zathura.nix @@ -0,0 +1,26 @@ +{ pkgs, ... }: + +{ + home = { + packages = [ pkgs.zathura ]; + + file.".config/zathura/zathurarc".text = '' + set font "Iosevka 14px" + + set inputbar-bg "#161616" + set inputbar-fg "#909737" + + set statusbar-bg "#161616" + set statusbar-fg "#909737" + + set completion-bg "#161616" + set completion-fg "#909737" + + set completion-highlight-bg "#909737" + set completion-highlight-fg "#161616" + + set recolor-lightcolor "#161616" + set recolor-darkcolor "#ffffff" + ''; + }; +} diff --git a/home.nix b/home.nix index 843a93d..50d8787 100644 --- a/home.nix +++ b/home.nix @@ -6,50 +6,12 @@ path = ''https://github.com/rycee/home-manager/archive/master.tar.gz''; }; + imports = [ + ./gui/default.nix + ]; + home = { keyboard.layout = "de"; - - packages = with pkgs; [ - # terminals - rxvt_unicode - kitty - # file viewers - zathura - sxiv - mpv - paraview - libreoffice - # file management - pcmanfm gvfs lxmenu-data shared_mime_info - veracrypt - # communication - tdesktop - # UI dev utilities (CLI utilities are added in project specific nix-shells) - zeal - hotspot - qcachegrind - gitg - ]; - - sessionVariables = { - # required to enable auto-mounting in pcmanfm - GIO_EXTRA_MODULES = [ "${pkgs.gvfs}/lib/gio/modules" ]; - # use GTK theme in libreoffice - SAL_USE_VCLPLUGIN = "gtk"; - }; - - # vim is configured globally for all users but common is the only GUI user - file.".gvimrc".text = '' - set guifont=Iosevka\ 10 - set linespace=2 - set guioptions=agim - set guioptions-=m - 2match SpecialKeyTab /\t/ - ''; - - file.".config/kitty/kitty.conf".source = ./conf/kitty.conf; - - file.".config/user-dirs.dirs".source = ./conf/xdg/user-dirs.dirs; }; programs.git = { @@ -66,137 +28,4 @@ defaultCacheTtlSsh = 120; enableScDaemon = false; }; - - services.syncthing.enable = true; - - xsession = { - enable = true; - initExtra = '' - xsetroot -cursor_name left_ptr - xset b off - ''; - - windowManager.xmonad = { - enable = true; - enableContribAndExtras = true; - config = ./conf/xmonad/xmonad.hs; - }; - }; - - xresources.extraConfig = builtins.readFile ./conf/urxvt.Xresources; - - gtk = { - enable = true; - - theme = let - oomox-gtk-theme = pkgs.callPackage ./pkgs/oomox-gtk-theme.nix { - pkgs-unstable = import {}; - theme = { - accent_bg = "aadb0f"; - bg = "d8d8d8"; - fg = "101010"; - btn_bg = "f5f5f5"; - btn_fg = "111111"; - caret_size = 0.04; - caret1_fg = "101010"; - caret2_fg = "101010"; - hdr_btn_bg = "161616"; - hdr_btn_fg = "aadb0f"; - menu_bg = "909737"; - menu_fg = "1a1a1a"; - sel_bg = "aadb0f"; - sel_fg = "101010"; - txt_bg = "ffffff"; - txt_fg = "101010"; - gradient = 0.0; - roundness = 0; - spacing = 1; - wm_border_focus = "909737"; - wm_border_unfocus = "909737"; - gtk3_generate_dark = false; - }; - }; - in { - name = "oomox"; - package = oomox-gtk-theme; - }; - - iconTheme = let - oomox-archdroid-icon-theme = pkgs.callPackage ./pkgs/oomox-archdroid-icon-theme.nix { - color = "909737"; - }; - in { - name = "oomox-archdroid"; - package = oomox-archdroid-icon-theme; - }; - - font = { - name = "Iosevka 10"; - package = pkgs.iosevka; - }; - - gtk2.extraConfig = '' - style "vimfix" { bg[NORMAL] = "#161616" } - widget "vim-main-window.*GtkForm" style "vimfix" - ''; - }; - - programs.rofi = { - enable = true; - location = "top"; - font = "Iosevka 12"; - separator = "none"; - scrollbar = false; - borderWidth = 6; - yoffset = -6; - - colors = { - window = { - background = "#222222"; - border = "#aadb0f"; - separator = "#000000"; - }; - rows = { - normal = { - background = "#222222"; - foreground = "#8e8e8e"; - backgroundAlt = "#161616"; - highlight = { - background = "#111111"; - foreground = "#aadb0f"; - }; - }; - active = { - background = "#222222"; - foreground = "#8e8e8e"; - backgroundAlt = "#161616"; - highlight = { - background = "#111111"; - foreground = "#aadb0f"; - }; - }; - urgent = { - background = "#222222"; - foreground = "#dc322f"; - backgroundAlt = "#161616"; - highlight = { - background = "#dc322f"; - foreground = "#161616"; - }; - }; - }; - }; - - extraConfig = '' - rofi.modi: combi - rofi.combi-modi: windowcd,drun,ssh - ''; - }; - - programs.firefox = { - enable = true; - enableAdobeFlash = true; - }; - - home.file.".config/zathura/zathurarc".text = builtins.readFile ./conf/pwmt/zathurarc; } diff --git a/pkgs/oomox-archdroid-icon-theme.nix b/pkgs/oomox-archdroid-icon-theme.nix deleted file mode 100644 index 764bf2f..0000000 --- a/pkgs/oomox-archdroid-icon-theme.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ stdenv, pkgs, color, ... }: - -stdenv.mkDerivation rec { - name = "oomox-archdroid-icon-theme"; - - src = pkgs.fetchFromGitHub { - repo = "archdroid-icon-theme"; - owner = "themix-project"; - rev = "6dc4c92689ea2ce99534d6f461283efdf8ffd270"; - sha256 = "073iwaamzrmj0l6h4gzmbnmazq16lgpc027mr3l778b35qwwraq5"; - }; - - postPatch = '' - patchShebangs . - ''; - - installPhase = '' - HOME="$out/share/icons" - sed -i "66s/\.icons\///" change_color.sh - ./change_color.sh --output oomox-archdroid --color ${color} - ''; - - meta = { - description = "oomox-archdroid-icon-theme is a customizable fork of archdroid-icon-theme"; - homepage = https://github.com/themix-project/archdroid-icon-theme; - license = stdenv.lib.licenses.gpl3; - platforms = stdenv.lib.platforms.all; - }; -} diff --git a/pkgs/oomox-gtk-theme.nix b/pkgs/oomox-gtk-theme.nix deleted file mode 100644 index 6e217dd..0000000 --- a/pkgs/oomox-gtk-theme.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ stdenv, pkgs, pkgs-unstable, theme, ... }: - -stdenv.mkDerivation rec { - name = "oomox-gtk-theme"; - - src = pkgs.fetchFromGitHub { - repo = "oomox-gtk-theme"; - owner = "themix-project"; - rev = "aa9081b2899d7e8ba8ae47543173d2d9f0f13921"; - sha256 = "1yxhd6d61npx43qwa6gyvrwmivv42k3d6qn54q276aihwxlbgj4r"; - }; - - nativeBuildInputs = with pkgs; [ librsvg glib libxml2 gdk_pixbuf bc pkgs-unstable.sass pkgs-unstable.sassc ]; - propagatedUserEnvPkgs = with pkgs; [ gtk-engine-murrine ]; - - config = with theme; '' - ACCENT_BG=${accent_bg} - BG=${bg} - FG=${fg} - BTN_BG=${btn_bg} - BTN_FG=${btn_fg} - CARET1_FG=${caret1_fg} - CARET2_FG=${caret2_fg} - HDR_BTN_BG=${hdr_btn_bg} - HDR_BTN_FG=${hdr_btn_fg} - MENU_BG=${menu_bg} - MENU_FG=${menu_fg} - SEL_BG=${sel_bg} - SEL_FG=${sel_fg} - TXT_BG=${txt_bg} - TXT_FG=${txt_fg} - WM_BORDER_FOCUS=${wm_border_focus} - WM_BORDER_UNFOCUS=${wm_border_unfocus} - GTK3_GENERATE_DARK=${if gtk3_generate_dark then "True" else "False"} - CARET_SIZE=${toString caret_size} - GRADIENT=${toString gradient} - ROUNDNESS=${toString roundness} - SPACING=${toString spacing} - ''; - - postPatch = '' - patchShebangs . - ''; - - buildPhase = '' - HOME="$out/share/themes/oomox" - ./change_color.sh --make-opts all --target-dir "$out/share/themes" --output oomox <(echo -e "${config}") - ''; - - installPhase = '' - cd oomox-gtk-theme-* - ''; - - meta = { - description = "oomox-gtk-theme is a customizable fork of numix-gtk-theme."; - homepage = https://github.com/themix-project/oomox-gtk-theme; - license = stdenv.lib.licenses.gpl3; - platforms = stdenv.lib.platforms.all; - }; -} -- cgit v1.2.3