modularise home conf

This commit is contained in:
atagen 2023-09-28 13:15:38 +10:00
parent b07d950147
commit 4477d0d4a2
23 changed files with 1152 additions and 855 deletions

25
home/programs/firefox.nix Normal file
View file

@ -0,0 +1,25 @@
{
config,
lib,
pkgs,
...
}: {
config.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
];
};
};
}

38
home/programs/fuzzel.nix Normal file
View file

@ -0,0 +1,38 @@
{
config,
lib,
pkgs,
...
}: let
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
in {
config.home.packages = [pkgs.fuzzel];
config.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"];
};
};
};
}

190
home/programs/helix.nix Normal file
View file

@ -0,0 +1,190 @@
{
config,
lib,
pkgs,
...
}: let
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
in {
config.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;
};
};
settings = {
theme = "nix-rice";
editor.lsp.display-messages = true;
};
languages = {
language = [
{
name = "rust";
language-servers = ["rust-analyzer"];
}
];
language-server = {
rust-analyzer = {
config = {
cargo = {
buildScripts = {
enable = true;
};
};
procMacro = {
enable = true;
};
check = {
command = "clippy";
};
};
};
};
};
};
}

77
home/programs/ironbar.nix Normal file
View file

@ -0,0 +1,77 @@
{
config,
lib,
pkgs,
inputs,
...
}: {
config.imports =
config.imports
++ [
inputs.ironbar.homeManagerModules.default
];
config.programs.ironbar = with pkgs.rice; {
# enable = true;
config = {
anchor_to_edges = true;
position = "top";
height = 8;
icon_theme = icons.name;
start = [
{
type = "workspaces";
all_monitors = true;
}
{
type = "sys_info";
interval.memory = 30;
interval.cpu = 1;
format = [
" {cpu_percent}%"
" {memory_used} / {memory_total} GB"
];
}
];
center = [
{
type = "focused";
icon_size = 8;
}
];
end = [
{
type = "music";
player_type = "mpris";
on_click_middle = "playerctl play-pause";
on_scroll_up = "playerctl volume +5";
on_scroll_down = "playerctl volume -5";
}
{type = "clock";}
];
};
style = with palette-hex; (builtins.replaceStrings
[
"#BG"
"#DARKBG"
"#BORDER"
"#ACTIVEBORDER"
"#TEXT"
"#URGENT"
"#FONT"
"#SZFONT"
]
[
util.bg
normal.black
normal.black
normal.black
util.fg
normal.red
fonts.sans.name
"10" # (builtins.toString fonts.sans.size)
]
(builtins.readFile dots/ironbar.css));
};
}

42
home/programs/kitty.nix Normal file
View file

@ -0,0 +1,42 @@
{
config,
lib,
pkgs,
...
}: let
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
in {
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";
};
};
}

51
home/programs/qtile.nix Normal file
View file

@ -0,0 +1,51 @@
{
config,
lib,
pkgs,
...
}: let
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
in {
config.ezConf = {
"qtile/autostart.sh" = ../dots/qtile/autostart.sh;
};
config.extraTarget = ["qtile-session.target"];
config.xdg.configFile."qtile/config.py" = {
enable = true;
executable = true;
onChange = "pkill -SIGUSR1 qtile";
text = with palette-shex;
with pkgs.rice; (builtins.replaceStrings
[
"#GAPS"
"#BORDERWIDTH"
"#BORDERFOCUS"
"#BORDERCOL"
"#FONTFACE"
"#FONTSIZE"
"#BGCOL"
"#FGCOL"
]
[
(builtins.toString borders.gaps_in)
(builtins.toString borders.thickness)
bright.yellow
util.bg
fonts.sans.name
(builtins.toString fonts.sans.size)
util.bg
util.fg
]
(builtins.readFile ../dots/qtile/config.py));
};
config.systemd.user.targets.qtile-session = {
Unit = {
BindsTo = ["graphical-session.target"];
Wants = ["graphical-session-pre.target" "xdg-desktop-autostart.target"];
After = ["graphical-session-pre.target"];
Before = ["xdg-desktop-autostart.target"];
};
};
}

157
home/programs/sway.nix Normal file
View file

@ -0,0 +1,157 @@
{
config,
lib,
pkgs,
...
}: {
config.wayland.windowManager.sway = {
enable = true;
package = pkgs.sway;
config = with pkgs.rice; {
bars = [];
# reintroduces flicker
# output = {
# "*" = {
# adaptive_sync = "on";
# };
# };
focus = {
mouseWarping = "container";
wrapping = "no";
};
fonts = with fonts; {
names = [sans.name emoji.name];
size = 10.0;
};
gaps = {
inner = borders.gaps_in;
outer = borders.gaps_out;
smartGaps = true;
smartBorders = "no_gaps";
};
window = {
border = borders.thickness;
hideEdgeBorders = "smart";
titlebar = false;
commands = [
{
command = "move scratchpad";
criteria = {
app_id = "org.keepassxc.KeePassXC";
};
}
];
};
workspaceAutoBackAndForth = false;
input = {
"*" = {
accel_profile = "flat";
pointer_accel = "0.0";
xkb_options = "caps:escape";
};
};
startup = with pkgs; [
{command = "${lib.getExe' keepassxc "keepassxc"}";}
{command = "${lib.getExe' ckb-next "ckb-next"} -c -b";}
{command = "${lib.getExe' mullvad "mullvad"} connect";}
{command = "${lib.getExe' xorg.xrdb "xrdb"} -l ~/.Xresources";}
{command = "${lib.getExe' flashfocus "flashfocus"} -o 0.95 -t 175 -n 30 --no-flash-fullscreen -l on_open_close";}
{command = "${lib.getExe' glib.bin "gsettings"} set org.gnome.desktop.interface gtk-theme '${rice.gtk-theme.name}'";}
{command = "${lib.getExe' glib.bin "gsettings"} set org.gnome.desktop.interface font-name '${rice.fonts.sans.name}'";}
{command = "${lib.getExe' glib.bin "gsettings"} set org.gnome.desktop.interface icon-theme '${rice.icons.name}'";}
];
terminal = "kitty";
modifier = "Mod4";
keybindings = {
"Mod4+Return" = "exec kitty";
"Mod4+d" = "exec fuzzel";
"Mod4+e" = "exec thunar";
"Mod4+f" = "exec firefox";
"Mod4+Shift+e" = "exec wlogout";
"Mod4+Shift+s" = "exec grim -g \"$(slurp)\" -t png -o \"${config.home.homeDirectory}/Pictures/$(date +%F_%H-%m-%S).png\" && notify-send \"Screenshot taken.\"";
"Mod4+Shift+Ctrl+s" = "exec kooha";
"Mod4+n" = "exec swaync-client -t";
"Mod4+Space" = "floating toggle; move absolute position center";
"Mod4+c" = "focus floating; move absolute position center";
"Mod4+Shift+Space" = "fullscreen toggle";
"Mod4+a" = "focus parent";
"Mod4+Shift+a" = "focus child";
"Mod4+h" = "focus left";
"Mod4+j" = "focus down";
"Mod4+k" = "focus up";
"Mod4+l" = "focus right";
"Mod4+Shift+h" = "move left";
"Mod4+Shift+j" = "move down";
"Mod4+Shift+k" = "move up";
"Mod4+Shift+l" = "move right";
"Mod4+1" = "workspace 1";
"Mod4+Shift+1" = "move container to workspace 1";
"Mod4+2" = "workspace 2";
"Mod4+Shift+2" = "move container to workspace 2";
"Mod4+3" = "workspace 3";
"Mod4+Shift+3" = "move container to workspace 3";
"Mod4+4" = "workspace 4";
"Mod4+Shift+4" = "move container to workspace 4";
"Mod4+r" = "mode resize";
"Mod4+Shift+minus" = "move scratchpad";
"Mod4+minus" = "scratchpad show";
"Mod4+Shift+q" = "kill";
"Mod4+v" = "split toggle";
"XF86AudioMute" = "exec swayosd --output-volume mute-toggle";
"XF86AudioRaiseVolume" = "exec swayosd --output-volume raise";
"XF86AudioLowerVolume" = "exec swayosd --output-volume lower";
"XF86AudioStop" = "exec playerctl stop";
"XF86AudioPlay" = "exec playerctl play-pause";
"XF86AudioPrev" = "exec playerctl previous";
"XF86AudioNext" = "exec playerctl next";
"XF86MonBrightnessUp" = "exec swayosd --brightness raise";
"XF86MonBrightnessDown" = "exec swayosd --brightness lower";
};
menu = "fuzzel";
colors = with palette-hex; {
background = util.bg;
focused = {
background = util.bg;
border = bright.yellow;
childBorder = bright.yellow;
indicator = bright.yellow;
text = util.fg;
};
focusedInactive = {
background = normal.black;
border = util.bg;
childBorder = util.bg;
indicator = util.bg;
text = normal.white;
};
placeholder = {
background = util.bg;
border = bright.green;
childBorder = bright.green;
indicator = bright.green;
text = util.fg;
};
unfocused = {
background = normal.black;
border = util.bg;
childBorder = util.bg;
indicator = util.bg;
text = normal.white;
};
urgent = {
background = normal.red;
border = normal.red;
childBorder = normal.red;
indicator = normal.red;
text = normal.blue;
};
};
};
systemd.enable = true;
wrapperFeatures = {
base = true;
gtk = true;
};
xwayland = true;
};
}

50
home/programs/swaync.nix Normal file
View file

@ -0,0 +1,50 @@
{
config,
lib,
pkgs,
palette-hex,
...
}: let
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
in {
config.home.packages = [pkgs.swaynotificationcenter];
config.ezConf = {
"swaync/config.json" = ../dots/swaync/config.json;
"swaync/configSchema.json" = ../dots/swaync/configSchema.json;
};
config.ezServices = {
swaync = "${lib.getExe pkgs.swaynotificationcenter}";
};
config.xdg.configFile."swaync/style.css" = {
enable = true;
text = with palette-hex; (builtins.replaceStrings
[
"#PANELBG"
"#COLBORDER"
"#NOTIBGNORM"
"#NOTIBGHOVER"
"#NOTIBGFOCUS"
"#NOTIBGCLOSE"
"#NOTIBGHVERCLOSE"
"#BGSELECTED"
"#FONT"
"#BORDER"
"#ROUNDING"
]
[
util.bg
normal.black
util.bg
bright.black
bright.black
normal.black
bright.black
bright.black
pkgs.rice.fonts.sans.name
(builtins.toString pkgs.rice.borders.thickness)
(builtins.toString pkgs.rice.borders.rounding)
]
(builtins.readFile ../dots/swaync/style.css));
};
}

38
home/programs/wlogout.nix Normal file
View file

@ -0,0 +1,38 @@
{
config,
lib,
pkgs,
...
}: let
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
in {
config.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"
"#WINLOGO"
]
[
"${pkgs.wlogout}/share/wlogout"
"${pkgs.wlogout}/etc/wlogout"
util.bg
bright.yellow
util.bg
normal.black
(builtins.path {
name = "winlogo";
path = ./winlogo.png;
sha256 = "7c1ff96b553c7a7ca3a7b7cf8efe830ab7feea92355aed288a10ee7347c24108";
})
]
(builtins.readFile ../dots/wlogout/style.css));
};
}

72
home/programs/zsh.nix Normal file
View file

@ -0,0 +1,72 @@
{
config,
lib,
pkgs,
...
}: let
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
palette-shex = pkgs.lib.nix-rice.palette.toRGBShortHex pkgs.rice.palette;
in {
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";
}
];
};
}