diff --git a/capibara.nix b/capibara.nix index 799a998..df49839 100644 --- a/capibara.nix +++ b/capibara.nix @@ -8,13 +8,19 @@ let impermanence = builtins.fetchTarball { url = "https://github.com/nix-community/impermanence/archive/master.tar.gz"; }; + home-manager = builtins.fetchTarball { + url = "https://github.com/nix-community/home-manager/archive/release-21.11.tar.gz"; + }; in { imports = [ # Include the results of the hardware scan. ./nixos/hardware-configuration/capibara.nix ./nixos/common.nix + "${home-manager}/nixos" "${impermanence}/nixos.nix" ]; + home-manager.users.rilla = import home/capibara.nix; + fileSystems = { "/" = { device = "tmpfs"; @@ -132,19 +138,6 @@ in { }; }; - services.udev.extraRules = '' - # UDEV rules for Teensy USB devices - ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1" - ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1" - SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", MODE:="0666" - KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", MODE:="0666" - ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="664", GROUP="plugdev" - ''; - - hardware.opengl.enable = true; - hardware.bluetooth.enable = true; - services.blueman.enable = true; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave diff --git a/home/alacritty/capibara.nix b/home/alacritty/capibara.nix new file mode 100644 index 0000000..fdd6020 --- /dev/null +++ b/home/alacritty/capibara.nix @@ -0,0 +1,6 @@ +{ config, pkgs, ... }: + +{ + imports = [ ./nixos.nix ]; + programs.alacritty.settings.font.size = 9; +} diff --git a/home/alacritty/default.nix b/home/alacritty/nixos.nix similarity index 84% rename from home/alacritty/default.nix rename to home/alacritty/nixos.nix index fc5fb11..8355890 100644 --- a/home/alacritty/default.nix +++ b/home/alacritty/nixos.nix @@ -9,8 +9,6 @@ x = 0; y = 0; }; - # size = 7; - size = 9; }; }; }; diff --git a/home/alacritty/trantor.nix b/home/alacritty/trantor.nix new file mode 100644 index 0000000..7061a5a --- /dev/null +++ b/home/alacritty/trantor.nix @@ -0,0 +1,6 @@ +{ config, pkgs, ... }: + +{ + imports = [ ./nixos.nix ]; + programs.alacritty.settings.font.size = 7.5; +} diff --git a/home/default.nix b/home/capibara.nix similarity index 99% rename from home/default.nix rename to home/capibara.nix index 7902141..7303f20 100644 --- a/home/default.nix +++ b/home/capibara.nix @@ -22,7 +22,7 @@ in { ./barrier ./browsers ./dav - # ./desktop-xmonad + # ./desktop-xmonad/capibara.nix ./fonts ./git ./gotify diff --git a/home/desktop-xmonad/autorandr.nix b/home/desktop-xmonad/autorandr.nix deleted file mode 100644 index e9a9b04..0000000 --- a/home/desktop-xmonad/autorandr.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ config, pkgs, ... }: - -let - lvds_fingerprint = { - "LVDS-1" = "00ffffffffffff0030e4d8020000000000160103801c1078ea8855995b558f261d505400000001010101010101010101010101010101601d56d85000183030404700159c1000001b000000000000000000000000000000000000000000fe004c4720446973706c61790a2020000000fe004c503132355748322d534c42330059"; - }; - hdmi_fingerprint = { - "HDMI-2" = "00ffffffffffff0009d1e67845540000261d0103803c22782e4825a756529c270f5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c450056502100001e000000ff004c394b30303333313031510a20000000fd00324c1e5311000a202020202020000000fc0042656e51204757323738300a200117020322f14f901f04130312021101140607151605230907078301000065030c001000023a801871382d40582c450056502100001f011d8018711c1620582c250056502100009f011d007251d01e206e28550056502100001e8c0ad08a20e02d10103e960056502100001800000000000000000000000000000000000000000047"; - }; - lvds_config = { - "LVDS-1" = { - enable = true; - crtc = 0; - mode = "1366x768"; - position = "1920x0"; - rate = "60.00"; - }; - }; - hdmi_config = { - "HDMI-2" = { - enable = true; - primary = true; - crtc = 0; - mode = "1920x1080"; - position = "0x0"; - rate = "60.00"; - }; - }; -in -{ - programs.autorandr = { - enable = true; - hooks.postswitch = { - "change-background" = "/run/current-system/sw/bin/systemctl --user restart random-background.service"; - "restart-xmonad" = "${pkgs.xmonad-with-packages}/bin/xmonad --restart"; - }; - profiles = { - "default" = { - fingerprint = lvds_fingerprint; - config = lvds_config; - }; - "docked-open" = { - fingerprint = pkgs.lib.mkMerge [ hdmi_fingerprint lvds_fingerprint ]; - config = pkgs.lib.mkMerge [ hdmi_config lvds_config ]; - }; - "docked-closed" = { - fingerprint = hdmi_fingerprint; - config = hdmi_config; - }; - }; - }; -} diff --git a/home/desktop-xmonad/autorandr/capibara.nix b/home/desktop-xmonad/autorandr/capibara.nix new file mode 100644 index 0000000..b4fac26 --- /dev/null +++ b/home/desktop-xmonad/autorandr/capibara.nix @@ -0,0 +1,48 @@ +{ config, pkgs, ... }: + +let + ext_monitor_fingerprint = + "00ffffffffffff0009d1e67845540000261d0103803c22782e4825a756529c270f5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c450056502100001e000000ff004c394b30303333313031510a20000000fd00324c1e5311000a202020202020000000fc0042656e51204757323738300a200117020322f14f901f04130312021101140607151605230907078301000065030c001000023a801871382d40582c450056502100001f011d8018711c1620582c250056502100009f011d007251d01e206e28550056502100001e8c0ad08a20e02d10103e960056502100001800000000000000000000000000000000000000000047"; + lvds_fingerprint = + "00ffffffffffff0030e4d8020000000000160103801c1078ea8855995b558f261d505400000001010101010101010101010101010101601d56d85000183030404700159c1000001b000000000000000000000000000000000000000000fe004c4720446973706c61790a2020000000fe004c503132355748322d534c42330059"; + lvds_config = { + enable = true; + crtc = 0; + mode = "1366x768"; + position = "0x0"; + rate = "60.00"; + }; + hdmi_config = { + enable = true; + primary = true; + crtc = 0; + mode = "1920x1080"; + position = "0x0"; + rate = "60.00"; + }; +in { + imports = [ ./common.nix ]; + programs.autorandr.profiles = { + + default = { + fingerprint."LVDS-1" = lvds_fingerprint; + config."LVDS-1" = lvds_config; + }; + + docked = { + fingerprint = { + "HDMI-2" = ext_monitor_fingerprint; + "LVDS-1" = lvds_fingerprint; + }; + config = { + "LVDS-1" = lvds_config // { position = "1920x0"; }; + "HDMI-2" = hdmi_config; + }; + }; + docked_closed = { + fingerprint."HDMI-2" = ext_monitor_fingerprint; + config."HDMI-2" = hdmi_config; + }; + + }; +} diff --git a/home/desktop-xmonad/autorandr/common.nix b/home/desktop-xmonad/autorandr/common.nix new file mode 100644 index 0000000..70db164 --- /dev/null +++ b/home/desktop-xmonad/autorandr/common.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +{ + programs.autorandr = { + enable = true; + hooks.postswitch = { + "change-background" = + "/run/current-system/sw/bin/systemctl --user restart random-background.service"; + "restart-xmonad" = "${pkgs.xmonad-with-packages}/bin/xmonad --restart"; + }; + }; +} diff --git a/home/desktop-xmonad/autorandr/trantor.nix b/home/desktop-xmonad/autorandr/trantor.nix new file mode 100644 index 0000000..f49f6a6 --- /dev/null +++ b/home/desktop-xmonad/autorandr/trantor.nix @@ -0,0 +1,67 @@ +{ config, pkgs, ... }: + +let + ext_monitor_fingerprint = + "00ffffffffffff0009d1e67845540000261d0103803c22782e4825a756529c270f5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c450056502100001e000000ff004c394b30303333313031510a20000000fd00324c1e5311000a202020202020000000fc0042656e51204757323738300a200117020322f14f901f04130312021101140607151605230907078301000065030c001000023a801871382d40582c450056502100001f011d8018711c1620582c250056502100009f011d007251d01e206e28550056502100001e8c0ad08a20e02d10103e960056502100001800000000000000000000000000000000000000000047"; + edp_fingerprint = + "00ffffffffffff0030e46e040000000000180104a52615780a0bb5a35955a0270c5054000000010101010101010101010101010101012e3680a070381f40302035007ed71000001b1f2480a070381f40302035007ed71000001b00000000000000000000000000000000000000000002000a30ff0a3c96191d4896000000003f"; + edp_config = { + enable = true; + crtc = 0; + mode = "1368x768"; + position = "1920x0"; + rate = "60.00"; + rotate = "left"; + }; + hdmi_config = { + enable = true; + primary = true; + crtc = 0; + mode = "1920x1080"; + position = "0x0"; + rate = "60.00"; + }; +in { + imports = [ ./common.nix ]; + programs.autorandr.profiles = { + + default = { + fingerprint = { + "HDMI-1-1" = ext_monitor_fingerprint; + "eDP-1-1" = edp_fingerprint; + }; + config = { + "HDMI-1-1" = hdmi_config; + "eDP-1-1" = edp_config; + }; + }; + + default_intel = { + fingerprint = { + "HDMI-1" = ext_monitor_fingerprint; + "eDP-1" = edp_fingerprint; + }; + config = { + "HDMI-1" = hdmi_config; + "eDP-1" = edp_config; + }; + }; + + nomonitor_intel = { + fingerprint."eDP-1" = edp_fingerprint; + config."eDP-1" = edp_config // { position = "0x0"; }; + }; + onlymonitor_intel = { + fingerprint = { "HDMI-1" = ext_monitor_fingerprint; }; + config = { "HDMI-1" = hdmi_config; }; + }; + nomonitor_nvidia = { + fingerprint."eDP-1-1" = edp_fingerprint; + config."eDP-1-1" = edp_config // { position = "0x0"; }; + }; + onlymonitor_nvidia = { + fingerprint = { "HDMI-1-1" = ext_monitor_fingerprint; }; + config = { "HDMI-1-1" = hdmi_config; }; + }; + }; +} diff --git a/home/desktop-xmonad/capibara.nix b/home/desktop-xmonad/capibara.nix new file mode 100644 index 0000000..89fc812 --- /dev/null +++ b/home/desktop-xmonad/capibara.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +let + desktopConfig = import ./desktop_config.nix { + config = config; + pkgs = pkgs; + }; +in desktopConfig // { + imports = [ ./common.nix ./autorandr/capibara.nix ]; + home.file.".xinitrc".text = '' + exec ${config.home.homeDirectory}/.xsession + ''; +} diff --git a/home/desktop-xmonad/common.nix b/home/desktop-xmonad/common.nix new file mode 100644 index 0000000..a3e5c1e --- /dev/null +++ b/home/desktop-xmonad/common.nix @@ -0,0 +1,51 @@ +{ config, pkgs, ... }: + +let + obtoxmd = pkgs.callPackage ./obtoxmd.nix { inherit config pkgs; }; +in { + imports = [ ./rofi.nix ./misc.nix ]; + home = { + keyboard = { + layout = "us"; + options = [ "caps:escape" ]; + variant = "altgr-intl"; + }; + packages = [ obtoxmd pkgs.openbox ]; + file = { + ".xmonad/icons/3cols.xpm".source = ./icons/3cols.xpm; + ".xmonad/icons/float.xpm".source = ./icons/float.xpm; + ".xmonad/icons/full.xpm".source = ./icons/full.xpm; + ".xmonad/icons/grid.xpm".source = ./icons/grid.xpm; + ".xmonad/icons/mtall.xpm".source = ./icons/mtall.xpm; + ".xmonad/icons/tabs.xpm".source = ./icons/tabs.xpm; + ".xmonad/icons/tall.xpm".source = ./icons/tall.xpm; + }; + }; + + xsession = { + enable = true; + initExtra = '' + xset s off -dpms + ${pkgs.autorandr}/bin/autorandr --change --default default + export WINIT_X11_SCALE_FACTOR=1.33 + ''; + }; + + services.stalonetray = { + enable = true; + config = { + icon_size = 20; + background = "#282828"; # todo + sticky = true; + geometry = "3x1-350+0"; + icon_gravity = "E"; + grow_gravity = "E"; + }; + }; + + programs.zsh.loginExtra = '' + [[ -z "''${DISPLAY}" ]] && [[ "$(tty)" = "/dev/tty1" ]] && \ + exec "${pkgs.xorg.xinit}/bin/startx" 1> "${config.home.homeDirectory}/.xsession-errors" 2>&1 + ''; + +} diff --git a/home/desktop-xmonad/default.nix b/home/desktop-xmonad/default.nix deleted file mode 100644 index 8f3000c..0000000 --- a/home/desktop-xmonad/default.nix +++ /dev/null @@ -1,294 +0,0 @@ -{ config, pkgs, ... }: - -let - gruvbox-dark = { - bg = "#282828"; - bg1 = "#3c3836"; - bg2 = "#504945"; - - fg = "#ebdbb2"; - fg0 = "#fbf1c7"; - fg3 = "#bdae93"; - - red = "#cc241d"; - green = "#98971a"; - yellow = "#d79921"; - blue = "#458588"; - purple = "#b16286"; - aqua = "#689d6a"; - gray = "#a89984"; - - gray2 = "#928374"; - red-light = "#fb4934"; - green-light = "#b8bb26"; - yellow-light = "#fabd2f"; - blue-light = "#83a598"; - purple-light = "#d3869b"; - aqua-light = "#8ec07c"; - - }; - colors = { - fg = gruvbox-dark.fg; - selFg = gruvbox-dark.fg0; - bg = gruvbox-dark.bg; - sel = gruvbox-dark.blue; - inactive = gruvbox-dark.gray; - inactiveBorder = gruvbox-dark.bg2; - urgent = gruvbox-dark.red; - }; - rofiTransparency = "96"; - font = { - name = "Inter"; - size = "10"; - }; - monoFont = { - name = "Hack"; - size = "9"; - }; - hmonitors = pkgs.haskellPackages.callPackage ./hmonitors.nix {}; - obtoxmd = pkgs.callPackage ./obtoxmd.nix { inherit config pkgs; }; - - hmonitorsQuery = "${hmonitors}/bin/hmonitors-query"; - acpi = "${pkgs.acpi}/bin/acpi"; - nmcli = "${pkgs.networkmanager}/bin/nmcli"; - pamixer = "${pkgs.pamixer}/bin/pamixer"; - -in -{ - imports = [ ./autorandr.nix ./rofi.nix ./misc.nix ]; - home = { - keyboard = { - layout = "us"; - options = ["caps:escape"]; - variant = "altgr-intl"; - }; - packages = [hmonitors obtoxmd pkgs.acpi pkgs.pamixer pkgs.openbox]; - file = { - ".xinitrc".text = "exec ${config.home.homeDirectory}/.xsession"; - ".xmonad/icons/3cols.xpm".source = ./icons/3cols.xpm; - ".xmonad/icons/float.xpm".source = ./icons/float.xpm; - ".xmonad/icons/full.xpm".source = ./icons/full.xpm; - ".xmonad/icons/grid.xpm".source = ./icons/grid.xpm; - ".xmonad/icons/mtall.xpm".source = ./icons/mtall.xpm; - ".xmonad/icons/tabs.xpm".source = ./icons/tabs.xpm; - ".xmonad/icons/tall.xpm".source = ./icons/tall.xpm; - }; - }; - - xsession = { - enable = true; - initExtra = '' - xset s off -dpms - ${pkgs.autorandr}/bin/autorandr --change --default default - export WINIT_X11_SCALE_FACTOR=1.33 - ''; - windowManager.xmonad = { - enable = true; - enableContribAndExtras = true; - extraPackages = haskellPackages : [ - haskellPackages.monad-logger - haskellPackages.dbus - ]; - config = ./xmonad/xmonad.hs; - libFiles = { - "Bindings.hs" = ./xmonad/lib/Bindings.hs; - "DefaultConfig.hs" = ./xmonad/lib/DefaultConfig.hs; - "Layouts.hs" = ./xmonad/lib/Layouts.hs; - "ManageHook.hs" = ./xmonad/lib/ManageHook.hs; - "Prompts.hs" = ./xmonad/lib/Prompts.hs; - "Utils.hs" = ./xmonad/lib/Utils.hs; - "Xmobar.hs" = ./xmonad/lib/Xmobar.hs; - "HostConfig.hs" = pkgs.writeText "HostConfig.hs" '' - module HostConfig - ( fontConfig - , colorConfig - , FontConfig (FontConfig) - , fontSize - , fontName - , ColorConfig (ColorConfig) - , fgColor - , selFgColor - , bgColor - , selColor - , inactiveColor - , inactiveBorderColor - , urgentColor - ) where - - fontConfig :: FontConfig - fontConfig = FontConfig - { fontSize = ${font.size} - , fontName = "${font.name}" - } - - colorConfig :: ColorConfig - colorConfig = ColorConfig - { fgColor = "${colors.fg}" - , selFgColor = "${colors.selFg}" - , bgColor = "${colors.bg}" - , selColor = "${colors.sel}" - , inactiveColor = "${colors.inactive}" - , inactiveBorderColor = "${colors.inactiveBorder}" - , urgentColor = "${colors.urgent}" - } - - data FontConfig = FontConfig - { fontSize :: Int - , fontName :: String - } deriving Show - - data ColorConfig = ColorConfig - { fgColor :: String - , selFgColor :: String - , bgColor :: String - , selColor :: String - , inactiveColor :: String - , inactiveBorderColor :: String - , urgentColor :: String - } deriving Show - ''; - }; - }; - }; - - programs.xmobar = { - enable = true; - extraConfig = '' - Config - { font = "xft:${font.name}:style=Regular:size=${font.size}" - , additionalFonts = ["xft:mplus Nerd Font:size=12"] - , bgColor = "${colors.bg}" - , fgColor = "${colors.fg}" - , alignSep = "}{" - , sepChar = "%" - , template = "%StdinReader% }{ %vol%%bat%%net%%date%" - , lowerOnStart = True - , hideOnStart = False - , persistent = True - , allDesktops = True - , position = TopW L 100 - , commands = - [ Run Com "${hmonitorsQuery}" ["date" ] "date" 10 - , Run Com "${hmonitorsQuery}" ["bat", "${acpi}" ] "bat" 10 - , Run Com "${hmonitorsQuery}" ["net", "${nmcli}" ] "net" 20 - , Run Com "${hmonitorsQuery}" ["vol", "${pamixer}"] "vol" 5 - , Run StdinReader - ] - } - ''; - }; - - services.dunst = { - enable = true; - iconTheme = { - name = "Papirus-Dark"; - package = pkgs.papirus-icon-theme; - }; - settings = { - global = { - font = "${font.name} ${font.size}"; - format = ''%s\n%b''; - sort = "yes"; - indicate_hidden = "yes"; - alignment = "left"; - bounce_freq = 0; - show_age_threshold = 60; - word_wrap = "yes"; - ignore_newline = "no"; - geometry = "300x5-30+20"; - shrink = "yes"; - transparency = 0; - idle_threshold = 10; - monitor = 0; - follow = "mouse"; - sticky_history = "yes"; - history_length = 20; - show_indicators = "yes"; - line_height = 0; - separator_height = 2; - padding = 8; - horizontal_padding = 8; - separator_color = "frame"; - startup_notification = false; - dmenu = "${pkgs.rofi}/bin/rofi -dmenu -p dunst:"; - browser = "${pkgs.firefox}/bin/firefox"; - icon_position = "left"; - frame_width = 0; - frame_color = colors.inactive; - }; - shortcuts = { - close = "ctrl+space"; - close_all = "ctrl+shift+space"; - context = "ctrl+shift+period"; - }; - urgency_low = { - background = "${colors.bg}${rofiTransparency}"; - foreground = colors.fg; - timeout = 10; - }; - urgency_normal = { - background = "${colors.sel}${rofiTransparency}"; - foreground = colors.selFg; - timeout = 10; - }; - urgency_critical = { - background = "${colors.urgent}${rofiTransparency}"; - foreground = colors.selFg; - timeout = 10; - }; - }; - }; - - services.stalonetray = { - enable = true; - config = { - icon_size = 20; - background = colors.bg; - sticky = true; - geometry = "3x1-350+0"; - icon_gravity = "E"; - grow_gravity = "E"; - }; - }; - - xresources.properties = { - "Sxiv.foreground" = colors.fg; - "Sxiv.background" = colors.bg; - "Sxiv.font" = "${monoFont.name}:size=${monoFont.size}"; - }; - - programs.zathura = { - enable = true; - options = { - font = "${monoFont.name} ${monoFont.size}"; - default-bg = colors.bg; - default-fg = gruvbox-dark.bg1; - statusbar-fg = gruvbox-dark.fg3; - statusbar-bg = gruvbox-dark.bg2; - inputbar-bg = colors.bg; - inputbar-fg = colors.sel; - notification-bg = colors.bg; - notification-fg = colors.sel; - notification-error-bg = colors.bg; - notification-error-fg = gruvbox-dark.red-light; - notification-warning-bg = colors.bg; - notification-warning-fg = gruvbox-dark.red-light; - highlight-color = gruvbox-dark.yellow-light; - highlight-active-color = gruvbox-dark.blue-light; - completion-bg = gruvbox-dark.bg1; - completion-fg = gruvbox-dark.blue-light; - completion-highlight-fg = colors.selFg; - completion-highlight-bg = gruvbox-dark.blue-light; - recolor-lightcolor = colors.bg; - recolor-darkcolor = colors.fg; - recolor = false; - recolor-keephue = false; - }; - }; - - programs.zsh.loginExtra = '' - [[ -z "''${DISPLAY}" ]] && [[ "$(tty)" = "/dev/tty1" ]] && \ - exec "${pkgs.xorg.xinit}/bin/startx" 1> "${config.home.homeDirectory}/.xsession-errors" 2>&1 - ''; - -} diff --git a/home/desktop-xmonad/desktop_config.nix b/home/desktop-xmonad/desktop_config.nix new file mode 100644 index 0000000..e10c51e --- /dev/null +++ b/home/desktop-xmonad/desktop_config.nix @@ -0,0 +1,247 @@ +{ config, pkgs, fontSize ? "10", monoFontSize ? "9", ... }: + +let + gruvbox-dark = { + bg = "#282828"; + bg1 = "#3c3836"; + bg2 = "#504945"; + + fg = "#ebdbb2"; + fg0 = "#fbf1c7"; + fg3 = "#bdae93"; + + red = "#cc241d"; + green = "#98971a"; + yellow = "#d79921"; + blue = "#458588"; + purple = "#b16286"; + aqua = "#689d6a"; + gray = "#a89984"; + + gray2 = "#928374"; + red-light = "#fb4934"; + green-light = "#b8bb26"; + yellow-light = "#fabd2f"; + blue-light = "#83a598"; + purple-light = "#d3869b"; + aqua-light = "#8ec07c"; + + }; + colors = { + fg = gruvbox-dark.fg; + selFg = gruvbox-dark.fg0; + bg = gruvbox-dark.bg; + sel = gruvbox-dark.blue; + inactive = gruvbox-dark.gray; + inactiveBorder = gruvbox-dark.bg2; + urgent = gruvbox-dark.red; + }; + rofiTransparency = "96"; + font = { + name = "Inter"; + size = fontSize; + }; + monoFont = { + name = "Hack"; + size = monoFontSize; + }; + + hmonitors = pkgs.haskellPackages.callPackage ./hmonitors.nix { }; + + hmonitorsQuery = "${hmonitors}/bin/hmonitors-query"; + acpi = "${pkgs.acpi}/bin/acpi"; + nmcli = "${pkgs.networkmanager}/bin/nmcli"; + pamixer = "${pkgs.pamixer}/bin/pamixer"; + +in { + xsession.windowManager.xmonad = { + enable = true; + enableContribAndExtras = true; + extraPackages = haskellPackages: [ + haskellPackages.monad-logger + haskellPackages.dbus + ]; + config = ./xmonad/xmonad.hs; + libFiles = { + "Bindings.hs" = ./xmonad/lib/Bindings.hs; + "DefaultConfig.hs" = ./xmonad/lib/DefaultConfig.hs; + "Layouts.hs" = ./xmonad/lib/Layouts.hs; + "ManageHook.hs" = ./xmonad/lib/ManageHook.hs; + "Prompts.hs" = ./xmonad/lib/Prompts.hs; + "Utils.hs" = ./xmonad/lib/Utils.hs; + "Xmobar.hs" = ./xmonad/lib/Xmobar.hs; + "HostConfig.hs" = pkgs.writeText "HostConfig.hs" '' + module HostConfig + ( fontConfig + , colorConfig + , FontConfig (FontConfig) + , fontSize + , fontName + , ColorConfig (ColorConfig) + , fgColor + , selFgColor + , bgColor + , selColor + , inactiveColor + , inactiveBorderColor + , urgentColor + ) where + + fontConfig :: FontConfig + fontConfig = FontConfig + { fontSize = ${font.size} + , fontName = "${font.name}" + } + + colorConfig :: ColorConfig + colorConfig = ColorConfig + { fgColor = "${colors.fg}" + , selFgColor = "${colors.selFg}" + , bgColor = "${colors.bg}" + , selColor = "${colors.sel}" + , inactiveColor = "${colors.inactive}" + , inactiveBorderColor = "${colors.inactiveBorder}" + , urgentColor = "${colors.urgent}" + } + + data FontConfig = FontConfig + { fontSize :: Int + , fontName :: String + } deriving Show + + data ColorConfig = ColorConfig + { fgColor :: String + , selFgColor :: String + , bgColor :: String + , selColor :: String + , inactiveColor :: String + , inactiveBorderColor :: String + , urgentColor :: String + } deriving Show + ''; + }; + }; + + programs.xmobar = { + enable = true; + extraConfig = '' + Config + { font = "xft:${font.name}:style=Regular:size=${font.size}" + , additionalFonts = ["xft:mplus Nerd Font:size=12"] + , bgColor = "${colors.bg}" + , fgColor = "${colors.fg}" + , alignSep = "}{" + , sepChar = "%" + , template = "%StdinReader% }{ %vol%%bat%%net%%date%" + , lowerOnStart = True + , hideOnStart = False + , persistent = True + , allDesktops = True + , position = TopW L 100 + , commands = + [ Run Com "${hmonitorsQuery}" ["date" ] "date" 10 + , Run Com "${hmonitorsQuery}" ["bat", "${acpi}" ] "bat" 10 + , Run Com "${hmonitorsQuery}" ["net", "${nmcli}" ] "net" 20 + , Run Com "${hmonitorsQuery}" ["vol", "${pamixer}"] "vol" 5 + , Run StdinReader + ] + } + ''; + }; + + services.dunst = { + enable = true; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + settings = { + global = { + font = "${font.name} ${font.size}"; + format = "%s\\n%b"; + sort = "yes"; + indicate_hidden = "yes"; + alignment = "left"; + bounce_freq = 0; + show_age_threshold = 60; + word_wrap = "yes"; + ignore_newline = "no"; + geometry = "300x5-30+20"; + shrink = "yes"; + transparency = 0; + idle_threshold = 10; + monitor = 0; + follow = "mouse"; + sticky_history = "yes"; + history_length = 20; + show_indicators = "yes"; + line_height = 0; + separator_height = 2; + padding = 8; + horizontal_padding = 8; + separator_color = "frame"; + startup_notification = false; + dmenu = "${pkgs.rofi}/bin/rofi -dmenu -p dunst:"; + browser = "${pkgs.firefox}/bin/firefox"; + icon_position = "left"; + frame_width = 0; + frame_color = colors.inactive; + }; + shortcuts = { + close = "ctrl+space"; + close_all = "ctrl+shift+space"; + context = "ctrl+shift+period"; + }; + urgency_low = { + background = "${colors.bg}${rofiTransparency}"; + foreground = colors.fg; + timeout = 10; + }; + urgency_normal = { + background = "${colors.sel}${rofiTransparency}"; + foreground = colors.selFg; + timeout = 10; + }; + urgency_critical = { + background = "${colors.urgent}${rofiTransparency}"; + foreground = colors.selFg; + timeout = 10; + }; + }; + }; + + xresources.properties = { + "Sxiv.foreground" = colors.fg; + "Sxiv.background" = colors.bg; + "Sxiv.font" = "${monoFont.name}:size=${monoFont.size}"; + }; + + programs.zathura = { + enable = true; + options = { + font = "${monoFont.name} ${monoFont.size}"; + default-bg = colors.bg; + default-fg = gruvbox-dark.bg1; + statusbar-fg = gruvbox-dark.fg3; + statusbar-bg = gruvbox-dark.bg2; + inputbar-bg = colors.bg; + inputbar-fg = colors.sel; + notification-bg = colors.bg; + notification-fg = colors.sel; + notification-error-bg = colors.bg; + notification-error-fg = gruvbox-dark.red-light; + notification-warning-bg = colors.bg; + notification-warning-fg = gruvbox-dark.red-light; + highlight-color = gruvbox-dark.yellow-light; + highlight-active-color = gruvbox-dark.blue-light; + completion-bg = gruvbox-dark.bg1; + completion-fg = gruvbox-dark.blue-light; + completion-highlight-fg = colors.selFg; + completion-highlight-bg = gruvbox-dark.blue-light; + recolor-lightcolor = colors.bg; + recolor-darkcolor = colors.fg; + recolor = false; + recolor-keephue = false; + }; + }; +} diff --git a/home/desktop-xmonad/misc.nix b/home/desktop-xmonad/misc.nix index 73811bc..8aca028 100644 --- a/home/desktop-xmonad/misc.nix +++ b/home/desktop-xmonad/misc.nix @@ -1,14 +1,12 @@ { config, pkgs, ... }: -let - wallpapers = "${config.home.homeDirectory}/Images/wallpapers/enabled"; -in -{ +let wallpapers = "${config.home.homeDirectory}/Images/wallpapers/enabled"; +in { services.picom = { enable = true; - blur = true; - fade = false; - shadow = true; + blur = true; + fade = false; + shadow = true; }; services.random-background = { @@ -28,9 +26,6 @@ in Type = "simple"; ExecStart = "${pkgs.xbanish}/bin/xbanish"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; - } diff --git a/home/desktop-xmonad/trantor.nix b/home/desktop-xmonad/trantor.nix new file mode 100644 index 0000000..90e50fc --- /dev/null +++ b/home/desktop-xmonad/trantor.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: + +let + desktopConfig = import ./desktop_config.nix { + config = config; + pkgs = pkgs; + fontSize = "12"; + monoFontSize = "13"; + }; +in desktopConfig // { + imports = [ ./common.nix ./autorandr/trantor.nix ]; + + home.file.".xinitrc".text = '' + ${pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource modesetting NVIDIA-0 + ${pkgs.xorg.xrandr}/bin/xrandr --auto + exec ${config.home.homeDirectory}/.xsession + ''; + + services.picom = { + backend = "glx"; + vSync = true; + extraOptions = '' + unredir-if-possible=false; + ''; + }; + +} diff --git a/home/theming/common.nix b/home/theming/common.nix new file mode 100644 index 0000000..2c4155b --- /dev/null +++ b/home/theming/common.nix @@ -0,0 +1,33 @@ +{ config, pkgs, ... }: + +{ + home.packages = [ + pkgs.gruvbox-dark-gtk + pkgs.papirus-icon-theme + pkgs.lxappearance + pkgs.qt5ct + pkgs.gtk-engine-murrine + pkgs.gtk_engines + ]; + + gtk = { + enable = true; + font = { + name = "Inter"; + package = pkgs.inter; + }; + theme = { + name = "gruvbox-dark"; + package = pkgs.gruvbox-dark-gtk; + }; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + }; + + qt = { + enable = true; + platformTheme = "gtk"; + }; +} diff --git a/home/theming/default.nix b/home/theming/default.nix index ef7f10c..23e18dc 100644 --- a/home/theming/default.nix +++ b/home/theming/default.nix @@ -1,34 +1,6 @@ { config, pkgs, ... }: { - home.packages = [ - pkgs.gruvbox-dark-gtk - pkgs.papirus-icon-theme - pkgs.lxappearance - pkgs.qt5ct - pkgs.gtk-engine-murrine - pkgs.gtk_engines - ]; - - gtk = { - enable = true; - font = { - name = "Inter"; - size = 10; - package = pkgs.inter; - }; - theme = { - name = "gruvbox-dark"; - package = pkgs.gruvbox-dark-gtk; - }; - iconTheme = { - name = "Papirus-Dark"; - package = pkgs.papirus-icon-theme; - }; - }; - - qt = { - enable = true; - platformTheme = "gtk"; - }; + imports = [ ./common.nix ]; + gtk.font.size = 10; } diff --git a/home/theming/trantor.nix b/home/theming/trantor.nix new file mode 100644 index 0000000..491d8a3 --- /dev/null +++ b/home/theming/trantor.nix @@ -0,0 +1,6 @@ +{ config, pkgs, ... }: + +{ + imports = [ ./common.nix ]; + gtk.font.size = 12; +} diff --git a/home/trantor.nix b/home/trantor.nix new file mode 100644 index 0000000..95ad78d --- /dev/null +++ b/home/trantor.nix @@ -0,0 +1,160 @@ +{ config, pkgs, ... }: + +let + impermanence = builtins.fetchTarball { + url = "https://github.com/nix-community/impermanence/archive/master.tar.gz"; + }; + +in { + # Let Home Manager install and manage itself. + # programs.home-manager.enable = true; + + # Home Manager needs a bit of information about you and the + # paths it should manage. + home.username = "rilla"; + home.homeDirectory = "/home/rilla"; + + imports = [ + "${impermanence}/home-manager.nix" + # ./desktop-sway + ./alacritty/trantor.nix + ./arduino + ./barrier + ./browsers + ./dav + ./desktop-xmonad/trantor.nix + ./fonts + ./git + ./gotify + ./gpg + ./idasen + ./mail + ./minidisc + ./mpd + ./msg + ./music + ./neovim + ./pass + ./rss + ./snapcast + ./sound + ./ssh + ./theming/trantor.nix + ./tmux + ./vitetris + ./wallets + ./zsh + ]; + + home.sessionVariables = { + EDITOR = "${pkgs.neovim}/bin/nvim"; + VISUAL = "${pkgs.neovim}/bin/nvim"; + BROWSER = "${pkgs.firefox}/bin/firefox"; + # OPENER = "todo"; # todo + TERMINAL = "${pkgs.alacritty}/bin/alacritty"; + CM_LAUNCHER = "rofi"; # for clipmenu + LEDGER_FILE = "${config.home.homeDirectory}/finance/2021.journal"; + QT_QPA_PLATFORMTHEME = "qt5ct"; + + }; + + home.packages = with pkgs; [ + R + acpi + android-tools + ansible + bind.dnsutils + calibre + docker-compose + file + gimp + gnumake + htop + jq + killall + libnotify + libreoffice + lxqt.pcmanfm-qt + mosh + mpv + neofetch + networkmanagerapplet + nextcloud-client + pandoc + pv + ripgrep + signify + sxiv + telnet + virt-manager + wget + ]; + + services.syncthing.enable = true; + + services.kdeconnect.enable = true; + + programs.bat = { + enable = true; + config = { theme = "gruvbox-dark"; }; + }; + + programs.fzf = { + enable = true; + enableZshIntegration = true; + # defaultOptions = [ + # "--preview --preview 'bat --color=always --style=header,grid --line-range :300 {}'" + # ]; + tmux.enableShellIntegration = true; + }; + + services.gnome-keyring = { + enable = true; + components = [ "secrets" ]; + }; + + services.nextcloud-client = { + enable = true; + startInBackground = true; + }; + + xdg.mimeApps = { + enable = true; + defaultApplications = { + "x-scheme-handler/http" = "firefox.desktop"; + "x-scheme-handler/https" = " firefox.desktop"; + "x-scheme-handler/chrome" = " firefox.desktop"; + "text/html" = "firefox.desktop"; + "application/x-extension-htm" = "firefox.desktop"; + "application/x-extension-html" = "firefox.desktop"; + "application/x-extension-shtml" = "firefox.desktop"; + "application/xhtml+xml" = "firefox.desktop"; + "application/x-extension-xhtml" = "firefox.desktop"; + "application/x-extension-xht" = "firefox.desktop"; + "x-scheme-handler/tg" = "userapp-Telegram Desktop.desktop"; + }; + associations.added = { + "x-scheme-handler/http" = "firefox.desktop"; + "x-scheme-handler/https" = " firefox.desktop"; + "x-scheme-handler/chrome" = " firefox.desktop"; + "text/html" = "firefox.desktop"; + "application/x-extension-htm" = "firefox.desktop"; + "application/x-extension-html" = "firefox.desktop"; + "application/x-extension-shtml" = "firefox.desktop"; + "application/xhtml+xml" = "firefox.desktop"; + "application/x-extension-xhtml" = "firefox.desktop"; + "application/x-extension-xht" = "firefox.desktop"; + "x-scheme-handler/tg" = "userapp-Telegram Desktop.desktop"; + + }; + }; + + dconf.settings = { + "org/virt-manager/virt-manager/connections" = { + "autoconnect" = [ "qemu:///system" ]; + "uris" = [ "qemu:///system" ]; + }; + }; + + home.stateVersion = "21.11"; +} diff --git a/nixos/common.nix b/nixos/common.nix index aee16b7..fd59f7a 100644 --- a/nixos/common.nix +++ b/nixos/common.nix @@ -1,12 +1,6 @@ { config, pkgs, ... }: -let - home-manager = builtins.fetchTarball { - url = "https://github.com/nix-community/home-manager/archive/release-21.11.tar.gz"; - }; -in { - imports = [ "${home-manager}/nixos" ]; - +{ nixpkgs.config = { packageOverrides = pkgs: { nur = import (builtins.fetchTarball @@ -76,6 +70,7 @@ in { Option "AccelerationProfile" "0" Option "AccelerationScheme" "predictable" Option "AccelerationNumerator" "3" + Option "AccelSpeed" "-0.5" EndSection ''; }; @@ -170,8 +165,6 @@ in { }; }; - home-manager.users.rilla = import ../home; - # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; @@ -200,6 +193,19 @@ in { }; programs.dconf.enable = true; + services.udev.extraRules = '' + # UDEV rules for Teensy USB devices + ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1" + ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", MODE:="0666" + KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", MODE:="0666" + ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="664", GROUP="plugdev" + ''; + + hardware.opengl.enable = true; + hardware.bluetooth.enable = true; + services.blueman.enable = true; + # Open ports in the firewall. # networking.firewall.allowedTCPPorts = [ ... ]; # diff --git a/nixos/hardware-configuration/trantor.nix b/nixos/hardware-configuration/trantor.nix new file mode 100644 index 0000000..c701109 --- /dev/null +++ b/nixos/hardware-configuration/trantor.nix @@ -0,0 +1,18 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/trantor.nix b/trantor.nix index 1aaec82..4cf4a40 100644 --- a/trantor.nix +++ b/trantor.nix @@ -4,12 +4,24 @@ { config, pkgs, ... }: -{ +let + impermanence = builtins.fetchTarball { + url = "https://github.com/nix-community/impermanence/archive/master.tar.gz"; + }; + home-manager = builtins.fetchTarball { + url = + "https://github.com/nix-community/home-manager/archive/release-21.11.tar.gz"; + }; +in { imports = [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ./common.nix + ./nixos/hardware-configuration/trantor.nix + ./nixos/common.nix + "${home-manager}/nixos" + "${impermanence}/nixos.nix" ]; + home-manager.users.rilla = import home/trantor.nix; + fileSystems = { "/" = { device = "/dev/mapper/cryptroot"; @@ -30,15 +42,20 @@ }; "/home" = { - device = "/dev/mapper/cryptroot"; + device = "/dev/mapper/crypthome"; fsType = "btrfs"; options = [ "subvol=home" "compress-force=zstd" ]; }; - "/boot" = { - device = "/dev/mapper/cryptroot"; + "/boot/efi" = { + device = "/dev/disk/by-uuid/0BFA-9A66"; + fsType = "vfat"; + }; + + "/home/rilla/Maildir" = { + device = "/dev/mapper/crypthome"; fsType = "btrfs"; - options = [ "subvol=boot" "compress-force=zstd" ]; + options = [ "subvol=mail" "compress-force=zstd" ]; }; "/swap" = { @@ -47,15 +64,40 @@ options = [ "subvol=swap" ]; }; - "/boot/efi" = { - device = "/dev/disk/by-uuid/0BFA-9A66"; - fsType = "vfat"; - }; + # "/home/rilla/music" = { + # device = "narwhal:/music"; + # fsType = "nfs"; + # options = [ + # "nfsvers=4" + # "noauto" + # "x-systemd.automount" + # "x-systemd.idle-timeout=1min" + # ]; + # }; + + # "/home/rilla/calibre" = { + # device = "narwhal:/calibre"; + # fsType = "nfs"; + # options = [ + # "nfsvers=4" + # "noauto" + # "x-systemd.automount" + # "x-systemd.idle-timeout=1min" + # ]; + # }; }; swapDevices = [{ device = "/swap/swapfile"; }]; + environment.variables = { + NIXOS_CONFIG = "/home/rilla/configs/nix-config/trantor.nix"; + WINT_HDPI_FACTOR = "1"; + }; + + networking.networkmanager.wifi.macAddress = "80:FA:5B:41:12:0F"; + nixpkgs.config.allowUnfree = true; + programs.steam.enable = true; boot = { loader = { @@ -68,8 +110,8 @@ enable = true; version = 2; device = "nodev"; - efiSupport = true; enableCryptodisk = true; + efiSupport = true; }; }; initrd = { @@ -98,6 +140,17 @@ }; }; + services.xserver = { videoDrivers = [ "nvidia" ]; }; + hardware.nvidia = { + nvidiaPersistenced = true; + modesetting.enable = true; + prime = { + sync.enable = true; + nvidiaBusId = "PCI:1:0:0"; + intelBusId = "PCI:0:2:0"; + }; + }; + # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave