nix/home/home.nix
2023-06-30 13:54:35 +10:00

676 lines
17 KiB
Nix

{
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;
};
};
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;
enableSyntaxHighlighting = 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";
}
];
};
}