{ inputs, outputs, lib, config, pkgs, nur, ... }: let palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette; palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette; in { imports = [ inputs.hyprland.homeManagerModules.default ./programs/eww/default.nix ]; home.stateVersion = "22.11"; home.packages = with pkgs; [ thunderbird clementine inkscape xfce.thunar feh zathura btop bat ripgrep fd lazygit fzf zoxide zellij glib # for gsettings grim slurp swaybg wlogout wf-recorder libnotify xorg.xrdb swayidle swaynotificationcenter gtklock playerctl kooha nyxt xplr culr swayosd fuzzel kdeconnect # syncthing keepassxc git-credential-keepassxc direnv mpv # libsForQt5.qtstyleplugin-kvantum gtk-engine-murrine ] ++ pkgs.rice.fonts.pkgs ++ pkgs.rice.icons.pkgs; systemd.user.targets.tray = { Unit = { Description = "Home Manager System Tray"; Requires = ["graphical-session-pre.target"]; }; }; fonts.fontconfig.enable = true; services.syncthing = { enable = true; }; services.udiskie.enable = true; wayland.windowManager.hyprland = { enable = true; systemdIntegration = true; nvidiaPatches = true; xwayland = { enable = true; hidpi = false; }; recommendedEnvironment = true; extraConfig = with pkgs.rice; (builtins.replaceStrings [ "#BGIMAGE" "#GTKTHEME" "#FONT" "#ICONTHEME" "#ACTIVEBORDER" "#BORDER" "#THICK" "#ROUND" "#GAPSIN" "#GAPSOUT" ] [ "${bg.image}" gtk-theme.name fonts.sans.name icons.name palette-shex.bright.yellow palette-shex.util.bg (builtins.toString borders.thickness) (builtins.toString borders.rounding) (builtins.toString borders.gaps_in) (builtins.toString borders.gaps_out) ] (builtins.readFile dots/hyprland/hyprland.conf)); }; programs.starship = { enable = true; settings = { # format = "$directory$os$all"; directory = { truncate_to_repo = false; }; }; }; programs.eww-hyprland = { enable = true; package = pkgs.eww-git; colors = with palette-hex; (builtins.replaceStrings [ "#BLACK" "#BLCKA" "#RED" "#RDA" "#GREEN" "#GRNA" "#YELLOW" "#YLWA" "#BLUE" "#BLUA" "#MAGENTA" "#MGNA" "#CYAN" "#CYNA" "#WHITE" "#WHTA" "#FG" "#BG" ] [ normal.black bright.black normal.red bright.red normal.green bright.green normal.yellow bright.yellow normal.blue bright.blue normal.magenta bright.magenta normal.cyan bright.cyan normal.white bright.white util.fg util.bg ] (builtins.readFile dots/eww/colors.scss)); }; systemd.user.startServices = "sd-switch"; systemd.user.services."hyprland-system76" = { Unit = { Description = "the hyprland process scheduler hook"; Requires = ["dbus.service"]; }; Install = { WantedBy = ["graphical-session.target" "default.target"]; }; Service = { ExecStart = ''${pkgs.hyprland-system76-scheduler-integration}/bin/hyprland-system76-scheduler-hook.sh''; }; }; xdg.enable = true; xresources.properties = with palette-hex; { "*.foreground" = util.fg; "*.background" = util.bg; "*.cursorColor" = util.cursor; "*.selection_foreground" = util.fg_sel; "*.selection_background" = util.bg_sel; "*.color0" = normal.black; "*.color1" = normal.red; "*.color2" = normal.green; "*.color3" = normal.yellow; "*.color4" = normal.blue; "*.color5" = normal.magenta; "*.color6" = normal.cyan; "*.color7" = normal.white; "*.color8" = bright.black; "*.color9" = bright.red; "*.color10" = bright.green; "*.color11" = bright.yellow; "*.color12" = bright.blue; "*.color13" = bright.magenta; "*.color14" = bright.cyan; "*.color15" = bright.white; }; xdg.configFile = builtins.mapAttrs (name: value: { enable = true; text = builtins.readFile value; }) { "swaync/config.json" = dots/swaync/config.json; "swaync/configSchema.json" = dots/swaync/configSchema.json; } // { "swaync/style.css" = { enable = true; text = with palette-hex; (builtins.replaceStrings [ "#PANELBG" "#BORDER" "#NOTIBGNORM" "#NOTIBGHOVER" "#NOTIBGFOCUS" "#NOTIBGCLOSE" "#NOTIBGHVERCLOSE" "#BGSELECTED" "#FONT" ] [ util.bg normal.black util.bg bright.black bright.black normal.black bright.black bright.black pkgs.rice.fonts.sans.name ] (builtins.readFile dots/swaync/style.css)); }; }; xdg.systemDirs.data = [ "${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}" "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}" ]; # home.sessionVariables = { # GTK_THEME = pkgs.rice.gtk.name; # }; programs.wlogout = { enable = true; layout = builtins.fromJSON (builtins.readFile dots/wlogout/layout); style = with palette-hex; (builtins.replaceStrings [ "/usr/share/wlogout" "/etc/wlogout" "#WINBG" "#BTNCOL" "#BTNBG" "#BTNFOCUSBG" ] [ "${pkgs.wlogout}/share/wlogout" "${pkgs.wlogout}/etc/wlogout" util.bg bright.yellow util.bg normal.black ] (builtins.readFile dots/wlogout/style.css)); }; programs.fuzzel = with pkgs.rice; { enable = true; settings = { main = { dpi-aware = "no"; font = with fonts.sans; lib.strings.concatStrings [name ":size=" (builtins.toString (size + 2))]; icon-theme = icons.name; terminal = "kitty"; }; dmenu = { exit-immediately-if-empty = "yes"; }; border = with borders; { width = thickness; radius = rounding; }; colors = { background = lib.strings.concatStrings [palette-hex.util.bg "A0"]; text = lib.strings.concatStrings [palette-hex.util.fg "FF"]; selection = lib.strings.concatStrings [palette-hex.bright.yellow "FF"]; selection-text = lib.strings.concatStrings [palette-hex.util.bg "FF"]; selection-match = lib.strings.concatStrings [palette-hex.normal.green "FF"]; match = lib.strings.concatStrings [palette-hex.bright.green "FF"]; border = lib.strings.concatStrings [palette-hex.bright.yellow "FF"]; }; }; }; gtk = with pkgs.rice; { enable = true; theme = with gtk-theme; { inherit package name; }; iconTheme = with icons; { inherit package name; }; font = with fonts.sans; { inherit name size package; }; }; programs.direnv = { enable = true; nix-direnv = { enable = true; }; }; programs.firefox = { enable = true; profiles.default = { id = 0; name = "Default"; settings = { "browser.startup.homepage" = "about:blank"; }; extensions = with pkgs.nur.repos.rycee.firefox-addons; [ vimium-c darkreader localcdn ublock-origin keepassxc-browser user-agent-string-switcher ]; }; }; programs.helix = { enable = true; themes = with palette-hex; { nix-rice = { "attribute" = bright.cyan; "keyword" = {fg = normal.red;}; "keyword.directive" = normal.red; "namespace" = bright.cyan; "punctuation" = bright.yellow; "punctuation.delimiter" = bright.yellow; "operator" = bright.magenta; "special" = normal.magenta; "variable.other.member" = bright.blue; "variable" = util.fg; "variable.builtin" = bright.yellow; "variable.parameter" = bright.white; "type" = normal.yellow; "type.builtin" = normal.yellow; "constructor" = { fg = bright.magenta; modifiers = ["bold"]; }; "function" = { fg = normal.green; modifiers = ["bold"]; }; "function.macro" = bright.cyan; "function.builtin" = normal.yellow; "tag" = normal.red; "comment" = { fg = normal.magenta; modifiers = ["italic"]; }; "constant" = {fg = bright.magenta;}; "constant.builtin" = { fg = bright.magenta; modifiers = ["bold"]; }; "string" = normal.green; "constant.numeric" = bright.magenta; "constant.character.escape" = { fg = bright.white; modifiers = ["bold"]; }; "label" = bright.cyan; "module" = bright.cyan; "diff.plus" = bright.green; "diff.delta" = bright.yellow; "diff.minus" = bright.red; "warning" = bright.yellow; "error" = bright.red; "info" = bright.cyan; "hint" = bright.blue; "ui.background" = {bg = util.bg;}; "ui.linenr" = {fg = normal.cyan;}; "ui.linenr.selected" = { fg = normal.yellow; modifiers = ["bold"]; }; "ui.cursorline" = {bg = normal.black;}; "ui.statusline" = { fg = util.fg; bg = bright.black; }; "ui.statusline.normal" = { fg = util.fg; bg = bright.black; }; "ui.statusline.insert" = { fg = util.fg; bg = normal.blue; }; "ui.statusline.select" = { fg = util.fg; bg = bright.yellow; }; "ui.statusline.inactive" = { fg = normal.white; bg = normal.black; }; "ui.popup" = {bg = normal.black;}; "ui.window" = {bg = normal.black;}; "ui.help" = { bg = normal.black; fg = util.fg; }; "ui.text" = {fg = util.fg;}; "ui.text.focus" = {fg = util.fg;}; "ui.selection" = { # modifiers = ["reversed"]; bg = bright.yellow; }; "ui.selection.primary" = {modifiers = ["reversed"];}; # "ui.selection.primary" = { bg = bright.cyan; }; "ui.cursor.primary" = { bg = normal.white; fg = normal.black; }; "ui.cursor.match" = {bg = bright.cyan;}; "ui.menu" = { fg = util.fg; bg = bright.black; }; "ui.menu.selected" = { fg = bright.black; bg = bright.blue; modifiers = ["bold"]; }; "ui.virtual.whitespace" = bright.black; "ui.virtual.ruler" = {bg = normal.black;}; "ui.virtual.inlay-hint" = {fg = normal.magenta;}; "diagnostic.warning" = { underline = { color = bright.yellow; style = "curl"; }; }; "diagnostic.error" = { underline = { color = bright.red; style = "curl"; }; }; "diagnostic.info" = { underline = { color = bright.cyan; style = "curl"; }; }; "diagnostic.hint" = { underline = { color = bright.blue; style = "curl"; }; }; "markup.heading" = bright.cyan; "markup.bold" = {modifiers = ["bold"];}; "markup.italic" = {modifiers = ["italic"];}; "markup.strikethrough" = {modifiers = ["crossed_out"];}; "markup.link.url" = { fg = bright.green; modifiers = ["underlined"]; }; "markup.link.text" = bright.red; "markup.raw" = bright.red; # old theme # "ui.background" = { bg = util.bg; }; # "ui.menu" = { fg = bright.cyan; bg = normal.black; }; # "ui.menu.selected" = { modifiers = [ "reversed" ]; }; # "ui.linenr" = { fg = bright.cyan; bg = normal.black; }; # "ui.popup" = { bg = bright.black; }; # "ui.linenr.selected" = { fg = normal.yellow; bg = normal.black; modifiers = [ "bold" ]; }; # "ui.selection" = { fg = bright.yellow; bg = normal.blue; }; # "ui.selection.primary" = { modifiers = [ "reversed" ]; }; # "comment" = { fg = bright.magenta; modifiers = [ "italics" ]; }; # "ui.statusline" = { fg = bright.cyan; bg = normal.black; }; # "ui.statusline.inactive" = { modifiers = [ "reversed" ]; }; # "ui.help" = { fg = normal.white; bg = bright.black; }; # # "ui.cursor" = { modifiers = [ "reversed" ]; }; # "variable" = normal.green; # "variable.builtin" = normal.green; # "constant.numeric" = normal.blue; # "constant" = normal.cyan; # "constant" = { fg = normal.cyan; modifiers = ["bold"]; }; # "attributes" = normal.yellow; # "type" = normal.yellow; # "ui.cursor.match" = { fg = normal.yellow; modifiers = [ "underlined" ]; }; # "string" = normal.green; # "variable.other.member" = normal.red; # "constant.character.escape" = { fg = normal.cyan; modifiers = ["bold"]; }; # "function" = { bright.blue; modifiers = ["bold"]; }; # "constructor" = { fg = normal.blue; modifiers = ["bold"]; }; # "special" = normal.blue; # "keyword" = normal.magenta; # "label" = normal.magenta; # "namespace" = normal.blue; # "diff.plus" = normal.green; # "diff.delta" = normal.yellow; # "diff.minus" = normal.red; # "diagnostic" = { modifiers = [ "underlined" ]; }; # "ui.gutter" = { bg = normal.black; }; # "info" = normal.blue; # "hint" = normal.magenta; # "debug" = normal.magenta; # "warning" = normal.yellow; # "error" = normal.red; }; }; settings = { theme = "nix-rice"; editor.lsp.display-messages = true; }; languages = { language = [{ name = "rust"; config = { cargo = { buildScripts = { enable = true; }; }; procMacro = { enable = true; }; check = { command = "clippy"; # as i walk through the valley of the sha }; }; }]; }; }; programs.kitty = with pkgs.rice; { enable = true; font = with fonts; { name = monospace.name; size = monospace.size; }; settings = with palette-hex; { foreground = util.fg; background = util.bg; cursor = util.cursor; cursor_text = util.bg; selection_foreground = util.fg_sel; selection_background = util.bg_sel; color0 = normal.black; color1 = normal.red; color2 = normal.green; color3 = normal.yellow; color4 = normal.blue; color5 = normal.magenta; color6 = normal.cyan; color7 = normal.white; color8 = bright.black; color9 = bright.red; color10 = bright.green; color11 = bright.yellow; color12 = bright.blue; color13 = bright.magenta; color14 = bright.cyan; color15 = bright.white; sync_to_monitor = "yes"; }; }; programs.git = { enable = true; userName = "atagen"; userEmail = "atagen@boss.co"; extraConfig = { credential.helper = "keepassxc"; }; }; programs.fzf = { enable = true; enableZshIntegration = true; colors = with palette-hex; { fg = util.fg; bg = util.bg; hl = util.bg_sel; "fg+" = util.fg_sel; "bg+" = util.bg_sel; "hl+" = bright.green; }; }; programs.zsh = { enable = true; enableAutosuggestions = true; enableCompletion = true; syntaxHighlighting.enable = true; enableVteIntegration = true; autocd = true; defaultKeymap = "viins"; initExtra = builtins.readFile ./dots/zsh; plugins = [ { name = "powerlevel10k"; src = pkgs.zsh-powerlevel10k; file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; } { name = "zsh-vi-mode"; src = pkgs.zsh-vi-mode; file = "share/zsh-vi-mode/zsh-vi-mode.zsh"; } { name = "zsh-autopair"; src = pkgs.zsh-autopair; file = "share/zsh-autopair/zsh-autopair.zsh"; } { name = "zsh-completions"; src = pkgs.zsh-completions; file = "share/zsh-completions/zsh-completions.zsh"; } { name = "zsh-command-time"; src = pkgs.zsh-command-time; file = "share/zsh-completions/zsh-command-time.zsh"; } { name = "zsh-autocomplete"; src = pkgs.zsh-autocomplete; file = "share/zsh-autocomplete/zsh-autocomplete.zsh"; } { name = "zsh-fast-syntax-highlighting"; src = pkgs.zsh-fast-syntax-highlighting; file = "share/zsh-fast-syntax-highlighting/zsh-fast-syntax-highlighting.zsh"; } { name = "zsh-nix-shell"; src = pkgs.zsh-nix-shell; file = "share/zsh-nix-shell/zsh-nix-shell.zsh"; } { name = "any-nix-shell"; src = pkgs.any-nix-shell; file = "share/any-nix-shell/any-nix-shell.zsh"; } { name = "nix-zsh-completions"; src = pkgs.nix-zsh-completions; file = "share/nix-zsh-completions/nix-zsh-completions.zsh"; } ]; }; }