begun making my home-manager config modular
This commit is contained in:
parent
97b344eb03
commit
4fcc76a32c
23 changed files with 1586 additions and 947 deletions
15
homes/me/ags/config.js
Normal file
15
homes/me/ags/config.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
const myLabel = Widget.Label({
|
||||
label: 'Emillllle',
|
||||
})
|
||||
|
||||
const myBar = Widget.Window({
|
||||
name: 'bar',
|
||||
anchor: ['top', 'left', 'right'],
|
||||
child: myLabel,
|
||||
})
|
||||
|
||||
App.config({
|
||||
windows: [
|
||||
myBar
|
||||
]
|
||||
})
|
||||
|
|
@ -11,10 +11,19 @@
|
|||
};
|
||||
|
||||
imports = [
|
||||
#inputs.nixcord.homeManagerModules.nixcord
|
||||
# inputs.spicetify-nix.homeManagerModules.default
|
||||
# ./wofi.nix
|
||||
#../../modules/discord/nixcord.nix
|
||||
../modules/git.nix
|
||||
../modules/bat.nix
|
||||
../modules/fish.nix
|
||||
../modules/editor/helix.nix
|
||||
|
||||
../modules/rio.nix
|
||||
../modules/firefox.nix
|
||||
../modules/nixcord.nix
|
||||
|
||||
../modules/hypr/hypridle.nix
|
||||
../modules/hypr/hyprlock.nix
|
||||
../modules/kanshi.nix
|
||||
../modules/wofi.nix
|
||||
];
|
||||
|
||||
/*
|
||||
|
|
@ -76,418 +85,21 @@
|
|||
style.name = "gtk2";
|
||||
};
|
||||
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
ignore_dbus_inhibit = false;
|
||||
lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
||||
before_sleep_cmd = "loginctl lock-session";
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
};
|
||||
|
||||
listener = [
|
||||
{
|
||||
timeout = 600;
|
||||
on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
||||
}
|
||||
|
||||
{
|
||||
timeout = 660;
|
||||
on-timeout = "systemctl suspend";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
background = {
|
||||
monitor = "";
|
||||
path = "$HOME/downloads/1.png"; # only png supported for now
|
||||
# color = $color1
|
||||
|
||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||
blur_size = 4;
|
||||
blur_passes = 3; # 0 disables blurring
|
||||
noise = 0.0117;
|
||||
contrast = 1.3000; # Vibrant!!!
|
||||
brightness = 0.8000;
|
||||
vibrancy = 0.2100;
|
||||
vibrancy_darkness = 0.0;
|
||||
};
|
||||
label = [
|
||||
{
|
||||
# Hours
|
||||
monitor = "";
|
||||
text = ''cmd[update:1000] echo "<b><big> $(date +"%H") </big></b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 112;
|
||||
font_family = "Geist Mono 10";
|
||||
shadow_passes = 3;
|
||||
shadow_size = 4;
|
||||
|
||||
position = "0, 240";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
{
|
||||
# Minutes
|
||||
monitor = "";
|
||||
text = ''cmd[update:1000] echo "<b><big> $(date +"%M") </big></b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 112;
|
||||
font_family = "Geist Mono 10";
|
||||
shadow_passes = 3;
|
||||
shadow_size = 4;
|
||||
|
||||
position = "0, 120";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
# Today
|
||||
{
|
||||
monitor = "";
|
||||
text = ''cmd[update:18000000] echo "<b><big> "$(date +'%A')" </big></b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 22;
|
||||
font_family = "JetBrainsMono Nerd Font 10";
|
||||
|
||||
position = "0, 30";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
# Week
|
||||
{
|
||||
monitor = "";
|
||||
text = ''cmd[update:18000000] echo "<b> "$(date +'%d %b')" </b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 18;
|
||||
font_family = "JetBrainsMono Nerd Font 10";
|
||||
|
||||
position = "0, 6";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
{
|
||||
# Degrees
|
||||
monitor = "";
|
||||
# get temperature in Brisbane
|
||||
text = ''cmd[update:18000000] echo "<b>Feels like<big> $(curl -s 'wttr.in/bne?format=%t' | tr -d '+') </big></b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 18;
|
||||
font_family = "Geist Mono 10";
|
||||
|
||||
position = "0, 40";
|
||||
halign = "center";
|
||||
valign = "bottom";
|
||||
}
|
||||
];
|
||||
|
||||
input-field = {
|
||||
monitor = "";
|
||||
size = "300, 50";
|
||||
outline_thickness = 3;
|
||||
|
||||
dots_size = 0.26; # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.64; # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true;
|
||||
dots_rouding = -1;
|
||||
|
||||
rounding = 22;
|
||||
outer_color = "rgb(255, 0, 0, 1)";
|
||||
inner_color = "rgb(0, 255, 0, 1)";
|
||||
font_color = "rgb(0, 0, 255, 1)";
|
||||
fade_on_empty = true;
|
||||
placeholder_text = "!!Super Secret!!"; # Text rendered in the input box when it's empty.
|
||||
|
||||
position = "0, 120";
|
||||
halign = "center";
|
||||
valign = "bottom";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
grace = 5;
|
||||
no_fade_in = false;
|
||||
disable_loading_bar = false;
|
||||
};
|
||||
|
||||
# BACKGROUND
|
||||
background = {
|
||||
monitor = "";
|
||||
path = "../../../downloads/1.png";
|
||||
blur_passes = 0;
|
||||
contrast = 0.8916;
|
||||
brightness = 0.7172;
|
||||
vibrancy = 0.1696;
|
||||
vibrancy_darkness = 0.0;
|
||||
};
|
||||
|
||||
label = [
|
||||
{
|
||||
# Day-Month-Date
|
||||
monitor = "";
|
||||
text = ''cmd[update:1000] echo -e "$(date +"%A, %B %d")"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 28;
|
||||
font_family = "JetBrainsMono Nerd Font Bold";
|
||||
position = "0, 490";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
# Time
|
||||
{
|
||||
monitor = "";
|
||||
text = ''cmd[update:1000] echo "<span>$(date +"%I:%M")</span>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 160;
|
||||
font_family = "steelfish outline regular";
|
||||
position = "0, 370";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
# USER
|
||||
{
|
||||
monitor = "";
|
||||
text = " $USER";
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
outline_thickness = 2;
|
||||
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true;
|
||||
font_size = 18;
|
||||
font_family = "JetBrainsMono Nerd Font Bold";
|
||||
position = "0, -180";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
];
|
||||
|
||||
# INPUT FIELD
|
||||
input-field = [
|
||||
{
|
||||
monitor = "";
|
||||
size = "300, 60";
|
||||
outline_thickness = 2;
|
||||
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true;
|
||||
outer_color = "rgba(255, 255, 255, 0)";
|
||||
inner_color = "rgba(255, 255, 255, 0.1)";
|
||||
font_color = "rgb(255, 255, 255, 1)";
|
||||
fade_on_empty = false;
|
||||
font_family = "JetBrainsMono Nerd Font Bold";
|
||||
placeholder_text = "<i>🔒 Enter Password</i>";
|
||||
hide_input = false;
|
||||
position = "0, -250";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
*/
|
||||
|
||||
programs = {
|
||||
# these are both required for home-manager to work
|
||||
home-manager.enable = true;
|
||||
|
||||
git = {
|
||||
ags = {
|
||||
enable = true;
|
||||
userName = "Emile Clark-Boman";
|
||||
userEmail = "eclarkboman@gmail.com";
|
||||
};
|
||||
configDir = ./ags;
|
||||
|
||||
# like `/bin/cat` but with syntax highlighting
|
||||
# TODO: change the pager (maybe use Github:sachaos/viddy instead)
|
||||
bat = {
|
||||
enable = true;
|
||||
config = {
|
||||
pager = "less -FR";
|
||||
# let Stylix control the theme
|
||||
#theme = "Dracula";
|
||||
};
|
||||
};
|
||||
|
||||
#nixvim = {
|
||||
# enable = true;
|
||||
# # TODO: allow clipboard to be configurable based on system clipboard
|
||||
# colorschemes.dracula.enable = true;
|
||||
# plugins = {
|
||||
# lualine.enable = true;
|
||||
# treesitter.enable = true;
|
||||
# };
|
||||
|
||||
# opts = {
|
||||
# number = true;
|
||||
# tabstop = 4;
|
||||
# softtabstop = 4;
|
||||
# shiftwidth = 4;
|
||||
# };
|
||||
|
||||
# clipboard.providers.wl-copy.enable = true;
|
||||
#};
|
||||
|
||||
# read https://docs.helix-editor.com/editor.html
|
||||
helix = {
|
||||
enable = true;
|
||||
settings = {
|
||||
theme = "dracula";
|
||||
editor = {
|
||||
line-number = "absolute";
|
||||
popup-border = "all";
|
||||
scroll-lines = 3;
|
||||
color-modes = true; # colour the mode indicator depending on mode
|
||||
shell = ["zsh" "-c"];
|
||||
|
||||
auto-format = true;
|
||||
auto-completion = true; # enable popup for autocomplete
|
||||
completion-timeout = 250; # time before completions display
|
||||
preview-completion-insert = true;
|
||||
completion-trigger-len = 2; # min word length to trigger completions
|
||||
completion-replace = true; # completions replace entire word
|
||||
|
||||
indent-heuristic = "tree-sitter"; # how indentation is computed
|
||||
# TODO: make this configurable (enabled on myputer, disabled on lolcathost)
|
||||
middle-click-paste = true;
|
||||
insert-final-newline = true; # append newline to file on write
|
||||
|
||||
gutters = [
|
||||
"diagnostics"
|
||||
"spacer"
|
||||
"line-numbers"
|
||||
"spacer"
|
||||
"diff"
|
||||
];
|
||||
|
||||
whitespace = {
|
||||
render = {
|
||||
space = "none"; # "all"
|
||||
tab = "none"; #"all"
|
||||
nbsp = "none";
|
||||
nnbsp = "none";
|
||||
newline = "none";
|
||||
};
|
||||
characters = {
|
||||
space = "·";
|
||||
nbsp = "⍽";
|
||||
nnbsp = "␣";
|
||||
tab = "→";
|
||||
newline = "⤶";
|
||||
tabpad = "·"; # Tabs will look like "→···" (depending on tab width)
|
||||
};
|
||||
};
|
||||
|
||||
indent-guides = {
|
||||
render = true;
|
||||
character = "▏"; # "|"
|
||||
skip-levels = 1;
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable = true;
|
||||
auto-signature-help = true; # hints for function parameters
|
||||
display-inlay-hints = true; # inline hints
|
||||
snippets = true;
|
||||
};
|
||||
|
||||
cursor-shape = {
|
||||
normal = "block";
|
||||
insert = "bar";
|
||||
select = "block";
|
||||
};
|
||||
|
||||
file-picker = {
|
||||
hidden = true; # show hidden files
|
||||
follow-symlinks = true;
|
||||
deduplicate-links = true;
|
||||
git-ignore = false; # dont read .gitignore files
|
||||
ignore = true; # use .ignore for helix instead of .gitignore
|
||||
};
|
||||
|
||||
statusline = {
|
||||
left = [
|
||||
"mode"
|
||||
"spacer"
|
||||
"version-control"
|
||||
"spinner"
|
||||
];
|
||||
center = [
|
||||
"file-name"
|
||||
"read-only-indicator"
|
||||
"file-modification-indicator"
|
||||
];
|
||||
right = [
|
||||
"position"
|
||||
"total-line-numbers"
|
||||
"file-encoding"
|
||||
"file-line-ending"
|
||||
"file-type"
|
||||
];
|
||||
separator = "|";
|
||||
mode.normal = "NORMAL";
|
||||
mode.insert = "INSERT";
|
||||
mode.select = "SELECT";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
languages.language = [
|
||||
{
|
||||
name = "nix";
|
||||
indent = {
|
||||
tab-width = 2;
|
||||
unit = " ";
|
||||
};
|
||||
block-comment-tokens = {
|
||||
start = "/*";
|
||||
end = "*/";
|
||||
};
|
||||
auto-format = true;
|
||||
formatter.command = "${pkgs.alejandra}/bin/alejandra";
|
||||
}
|
||||
{
|
||||
name = "python";
|
||||
indent = {
|
||||
tab-width = 4;
|
||||
unit = " ";
|
||||
};
|
||||
auto-format = false; # my python is beautiful ^_^
|
||||
rulers = [80];
|
||||
}
|
||||
extraPackages = with pkgs; [
|
||||
gtksourceview
|
||||
webkitgtk
|
||||
accountsservice
|
||||
];
|
||||
};
|
||||
|
||||
nixcord = {
|
||||
enable = true;
|
||||
config = {
|
||||
frameless = true;
|
||||
plugins = {
|
||||
# TODO: remove this plugin
|
||||
hideAttachments.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
firefox = {
|
||||
enable = true;
|
||||
policies = {
|
||||
#BlockAboutConfig = true;
|
||||
DefaultDownloadDirectory = "\${home}/downloads";
|
||||
};
|
||||
};
|
||||
|
||||
# I want to use fish as my login shell but it always
|
||||
# goes terrible cause it isn't POSIX compliant, so
|
||||
# instead Bash is my login and it will just exec fish
|
||||
|
|
@ -501,19 +113,6 @@
|
|||
# '';
|
||||
#};
|
||||
|
||||
fish = {
|
||||
enable = true;
|
||||
interactiveShellInit = ''
|
||||
set -g fish_greeting "Welcome weary traveler to my shop"
|
||||
'';
|
||||
plugins = [
|
||||
{
|
||||
name = "grc";
|
||||
src = pkgs.fishPlugins.grc.src;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
/*
|
||||
spicetify =
|
||||
let
|
||||
|
|
@ -530,314 +129,9 @@
|
|||
colorScheme = "mocha";
|
||||
};
|
||||
*/
|
||||
|
||||
# The terminal I use
|
||||
# TODO: this is dependent on nvim being installed
|
||||
# TODO: make this into a module with a configurable editor option
|
||||
rio = {
|
||||
enable = true;
|
||||
# Rio Config Docs: https://raphamorim.io/rio/docs/config
|
||||
settings = {
|
||||
theme = "dracula";
|
||||
hide-mouse-cursor-when-typing = true;
|
||||
|
||||
use-fork = true; # fork (dont spawn) Rio
|
||||
|
||||
padding-x = 10;
|
||||
padding-y = [15 10]; # top, left
|
||||
|
||||
# lines = (accumulated scroll * multiplier / divider)
|
||||
scroll = {
|
||||
multiplier = 3.0;
|
||||
divider = 1.0;
|
||||
};
|
||||
|
||||
fonts = {
|
||||
size = 15;
|
||||
features = [];
|
||||
|
||||
regular = {
|
||||
family = "JetBrainsMono Nerd Font"; # FiraCode
|
||||
style = "Normal";
|
||||
weight = 400;
|
||||
};
|
||||
|
||||
bold = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "Normal";
|
||||
weight = 800;
|
||||
};
|
||||
|
||||
italic = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "Italic";
|
||||
weight = 400;
|
||||
};
|
||||
|
||||
bold-italic = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "Italic";
|
||||
weight = 800;
|
||||
};
|
||||
};
|
||||
|
||||
# Run when the `OpenConfigEditor` keybinding is triggered
|
||||
editor = {
|
||||
program = "hx"; # helix
|
||||
args = [];
|
||||
};
|
||||
|
||||
renderer = {
|
||||
performance = "High";
|
||||
backend = "Automatic"; # Vulkan
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
wofi = {
|
||||
enable = true;
|
||||
settings = {
|
||||
location = "center";
|
||||
allow_markup = true;
|
||||
width = 250;
|
||||
};
|
||||
# Force the style to stop Stylix being a bitch and overwriting it
|
||||
style = lib.mkForce ''
|
||||
@define-color rosewater #f2d5cf;
|
||||
@define-color rosewater-rgb rgb(242, 213, 207);
|
||||
@define-color flamingo #eebebe;
|
||||
@define-color flamingo-rgb rgb(238, 190, 190);
|
||||
@define-color pink #f4b8e4;
|
||||
@define-color pink-rgb rgb(244, 184, 228);
|
||||
@define-color mauve #ca9ee6;
|
||||
@define-color mauve-rgb rgb(202, 158, 230);
|
||||
@define-color red #e78284;
|
||||
@define-color red-rgb rgb(231, 130, 132);
|
||||
@define-color maroon #ea999c;
|
||||
@define-color maroon-rgb rgb(234, 153, 156);
|
||||
@define-color peach #ef9f76;
|
||||
@define-color peach-rgb rgb(239, 159, 118);
|
||||
@define-color yellow #e5c890;
|
||||
@define-color yellow-rgb rgb(229, 200, 144);
|
||||
@define-color green #a6d189;
|
||||
@define-color green-rgb rgb(166, 209, 137);
|
||||
@define-color teal #81c8be;
|
||||
@define-color teal-rgb rgb(129, 200, 190);
|
||||
@define-color sky #99d1db;
|
||||
@define-color sky-rgb rgb(153, 209, 219);
|
||||
@define-color sapphire #85c1dc;
|
||||
@define-color sapphire-rgb rgb(133, 193, 220);
|
||||
@define-color blue #8caaee;
|
||||
@define-color blue-rgb rgb(140, 170, 238);
|
||||
@define-color lavender #babbf1;
|
||||
@define-color lavender-rgb rgb(186, 187, 241);
|
||||
@define-color text #c6d0f5;
|
||||
@define-color text-rgb rgb(198, 208, 245);
|
||||
@define-color subtext1 #b5bfe2;
|
||||
@define-color subtext1-rgb rgb(181, 191, 226);
|
||||
@define-color subtext0 #a5adce;
|
||||
@define-color subtext0-rgb rgb(165, 173, 206);
|
||||
@define-color overlay2 #949cbb;
|
||||
@define-color overlay2-rgb rgb(148, 156, 187);
|
||||
@define-color overlay1 #838ba7;
|
||||
@define-color overlay1-rgb rgb(131, 139, 167);
|
||||
@define-color overlay0 #737994;
|
||||
@define-color overlay0-rgb rgb(115, 121, 148);
|
||||
@define-color surface2 #626880;
|
||||
@define-color surface2-rgb rgb(98, 104, 128);
|
||||
@define-color surface1 #51576d;
|
||||
@define-color surface1-rgb rgb(81, 87, 109);
|
||||
@define-color surface0 #414559;
|
||||
@define-color surface0-rgb rgb(65, 69, 89);
|
||||
@define-color base #303446;
|
||||
@define-color base-rgb rgb(48, 52, 70);
|
||||
@define-color mantle #292c3c;
|
||||
@define-color mantle-rgb rgb(41, 44, 60);
|
||||
@define-color crust #232634;
|
||||
@define-color crust-rgb rgb(35, 38, 52);
|
||||
|
||||
* {
|
||||
font-family: 'FiraCode Nerd Font';
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
/* Window */
|
||||
window {
|
||||
margin: 0px;
|
||||
padding: 10px;
|
||||
border: 0.16em solid @teal;
|
||||
border-radius: 0.5em;
|
||||
background-color: @base;
|
||||
animation: slideIn 0.25s ease-in-out both;
|
||||
}
|
||||
|
||||
/* Slide In */
|
||||
@keyframes slideIn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Inner Box */
|
||||
#inner-box {
|
||||
margin: 5px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
background-color: @base;
|
||||
/*animation: fadeIn 0.5s ease-in-out both;*/
|
||||
}
|
||||
|
||||
/* Fade In */
|
||||
@keyframes fadeIn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Outer Box */
|
||||
#outer-box {
|
||||
margin: 5px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
/* Scroll */
|
||||
#scroll {
|
||||
margin: 0px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
/* Input */
|
||||
#input {
|
||||
margin: 5px 20px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
border-radius: 0.25em;
|
||||
color: @text;
|
||||
background-color: @base;
|
||||
animation: fadeIn 0.25s ease-in-out both;
|
||||
}
|
||||
|
||||
#input image {
|
||||
border: none;
|
||||
color: @red;
|
||||
}
|
||||
|
||||
#input * {
|
||||
outline: 4px solid @red!important;
|
||||
}
|
||||
|
||||
/* Text */
|
||||
#text {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
color: @text;
|
||||
animation: fadeIn 0.5s ease-in-out both;
|
||||
}
|
||||
|
||||
#entry {
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
#entry arrow {
|
||||
border: none;
|
||||
color: @teal;
|
||||
}
|
||||
|
||||
/* Selected Entry */
|
||||
#entry:selected {
|
||||
border: 0.10em solid @teal;
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
|
||||
#entry:selected #text {
|
||||
color: @teal;
|
||||
}
|
||||
|
||||
#entry:drop(active) {
|
||||
background-color: @lavender!important;
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
font = "JetBrains Mono Nerd Font 10";
|
||||
location = "center";
|
||||
terminal = "${pkgs.rio}/bin/rio";
|
||||
};
|
||||
};
|
||||
|
||||
# ----- SERVICES -----
|
||||
services = {
|
||||
# Change monitor positions
|
||||
# TODO: find a way to make this modular (ie put something different for my laptop)
|
||||
# my idea is to have a "monitors" module and use kanshi for wayland
|
||||
kanshi = {
|
||||
enable = true;
|
||||
systemdTarget = "hyprland-session.target";
|
||||
# You can find your monitors in hyprland by using `hyprctl monitors all`
|
||||
settings = [
|
||||
{
|
||||
# 1920x1080@144 gaming monitor
|
||||
output.criteria = "HDMI-A-1";
|
||||
output.mode = "1920x1080@119.98Hz";
|
||||
output.scale = 1.0;
|
||||
output.adaptiveSync = false; # Variable Refresh Rate (this can be changed for gaming)
|
||||
}
|
||||
{
|
||||
# 4k side monitor
|
||||
output.criteria = "DP-2";
|
||||
output.mode = "3840x2160@60.00Hz";
|
||||
output.scale = 2.0;
|
||||
}
|
||||
{
|
||||
# laptop builtin screen
|
||||
output.criteria = "eDP-1";
|
||||
output.mode = "1920x1080@60.02Hz";
|
||||
output.scale = 1.0;
|
||||
}
|
||||
|
||||
{
|
||||
# This is my dual-monitor desktop setup
|
||||
profile.name = "myputer";
|
||||
profile.outputs = [
|
||||
{
|
||||
criteria = "DP-2";
|
||||
position = "0,0";
|
||||
}
|
||||
{
|
||||
criteria = "HDMI-A-1";
|
||||
position = "3840,0";
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
# This is my laptop (lolcathost) :)
|
||||
profile.name = "lolcathost";
|
||||
profile.outputs = [
|
||||
{
|
||||
criteria = "eDP-1";
|
||||
position = "0,0";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# Nicely reload system units when changing configs
|
||||
systemd.user.startServices = "sd-switch";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,192 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
options = {
|
||||
#enable = lib.mkEnableOption "Enable wofi and my configuration";
|
||||
};
|
||||
|
||||
config = {
|
||||
programs = {
|
||||
wofi = {
|
||||
enable = true;
|
||||
settings = {
|
||||
location = "center";
|
||||
allow_markup = true;
|
||||
width = 250;
|
||||
};
|
||||
style = ''
|
||||
@define-color rosewater #f2d5cf;
|
||||
@define-color rosewater-rgb rgb(242, 213, 207);
|
||||
@define-color flamingo #eebebe;
|
||||
@define-color flamingo-rgb rgb(238, 190, 190);
|
||||
@define-color pink #f4b8e4;
|
||||
@define-color pink-rgb rgb(244, 184, 228);
|
||||
@define-color mauve #ca9ee6;
|
||||
@define-color mauve-rgb rgb(202, 158, 230);
|
||||
@define-color red #e78284;
|
||||
@define-color red-rgb rgb(231, 130, 132);
|
||||
@define-color maroon #ea999c;
|
||||
@define-color maroon-rgb rgb(234, 153, 156);
|
||||
@define-color peach #ef9f76;
|
||||
@define-color peach-rgb rgb(239, 159, 118);
|
||||
@define-color yellow #e5c890;
|
||||
@define-color yellow-rgb rgb(229, 200, 144);
|
||||
@define-color green #a6d189;
|
||||
@define-color green-rgb rgb(166, 209, 137);
|
||||
@define-color teal #81c8be;
|
||||
@define-color teal-rgb rgb(129, 200, 190);
|
||||
@define-color sky #99d1db;
|
||||
@define-color sky-rgb rgb(153, 209, 219);
|
||||
@define-color sapphire #85c1dc;
|
||||
@define-color sapphire-rgb rgb(133, 193, 220);
|
||||
@define-color blue #8caaee;
|
||||
@define-color blue-rgb rgb(140, 170, 238);
|
||||
@define-color lavender #babbf1;
|
||||
@define-color lavender-rgb rgb(186, 187, 241);
|
||||
@define-color text #c6d0f5;
|
||||
@define-color text-rgb rgb(198, 208, 245);
|
||||
@define-color subtext1 #b5bfe2;
|
||||
@define-color subtext1-rgb rgb(181, 191, 226);
|
||||
@define-color subtext0 #a5adce;
|
||||
@define-color subtext0-rgb rgb(165, 173, 206);
|
||||
@define-color overlay2 #949cbb;
|
||||
@define-color overlay2-rgb rgb(148, 156, 187);
|
||||
@define-color overlay1 #838ba7;
|
||||
@define-color overlay1-rgb rgb(131, 139, 167);
|
||||
@define-color overlay0 #737994;
|
||||
@define-color overlay0-rgb rgb(115, 121, 148);
|
||||
@define-color surface2 #626880;
|
||||
@define-color surface2-rgb rgb(98, 104, 128);
|
||||
@define-color surface1 #51576d;
|
||||
@define-color surface1-rgb rgb(81, 87, 109);
|
||||
@define-color surface0 #414559;
|
||||
@define-color surface0-rgb rgb(65, 69, 89);
|
||||
@define-color base #303446;
|
||||
@define-color base-rgb rgb(48, 52, 70);
|
||||
@define-color mantle #292c3c;
|
||||
@define-color mantle-rgb rgb(41, 44, 60);
|
||||
@define-color crust #232634;
|
||||
@define-color crust-rgb rgb(35, 38, 52);
|
||||
|
||||
* {
|
||||
font-family: 'FiraCode Nerd Font', monospace;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
/* Window */
|
||||
window {
|
||||
margin: 0px;
|
||||
padding: 10px;
|
||||
border: 0.16em solid @teal;
|
||||
border-radius: 0.5em;
|
||||
background-color: @base;
|
||||
animation: slideIn 0.25s ease-in-out both;
|
||||
}
|
||||
|
||||
/* Slide In */
|
||||
@keyframes slideIn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Inner Box */
|
||||
#inner-box {
|
||||
margin: 5px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
background-color: @base;
|
||||
/*animation: fadeIn 0.5s ease-in-out both;*/
|
||||
}
|
||||
|
||||
/* Fade In */
|
||||
@keyframes fadeIn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Outer Box */
|
||||
#outer-box {
|
||||
margin: 5px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
/* Scroll */
|
||||
#scroll {
|
||||
margin: 0px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
/* Input */
|
||||
#input {
|
||||
margin: 5px 20px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
border-radius: 0.25em;
|
||||
color: @text;
|
||||
background-color: @base;
|
||||
animation: fadeIn 0.25s ease-in-out both;
|
||||
}
|
||||
|
||||
#input image {
|
||||
border: none;
|
||||
color: @red;
|
||||
}
|
||||
|
||||
#input * {
|
||||
outline: 4px solid @red!important;
|
||||
}
|
||||
|
||||
/* Text */
|
||||
#text {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
color: @text;
|
||||
animation: fadeIn 0.5s ease-in-out both;
|
||||
}
|
||||
|
||||
#entry {
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
#entry arrow {
|
||||
border: none;
|
||||
color: @teal;
|
||||
}
|
||||
|
||||
/* Selected Entry */
|
||||
#entry:selected {
|
||||
border: 0.10em solid @teal;
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
|
||||
#entry:selected #text {
|
||||
color: @teal;
|
||||
}
|
||||
|
||||
#entry:drop(active) {
|
||||
background-color: @lavender!important;
|
||||
}
|
||||
''
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
15
homes/modules/bat.nix
Normal file
15
homes/modules/bat.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# like `/bin/cat` but with syntax highlighting
|
||||
# TODO: change the pager (maybe use Github:sachaos/viddy instead)
|
||||
programs.bat = {
|
||||
enable = true;
|
||||
config = {
|
||||
pager = "less -FR";
|
||||
theme = "Dracula";
|
||||
};
|
||||
};
|
||||
}
|
||||
135
homes/modules/editor/helix.nix
Normal file
135
homes/modules/editor/helix.nix
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# read https://docs.helix-editor.com/editor.html
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
settings = {
|
||||
theme = "dracula";
|
||||
editor = {
|
||||
line-number = "absolute";
|
||||
popup-border = "all";
|
||||
scroll-lines = 3;
|
||||
color-modes = true; # colour the mode indicator depending on mode
|
||||
shell = ["zsh" "-c"];
|
||||
|
||||
auto-format = true;
|
||||
auto-completion = true; # enable popup for autocomplete
|
||||
completion-timeout = 250; # time before completions display
|
||||
preview-completion-insert = true;
|
||||
completion-trigger-len = 2; # min word length to trigger completions
|
||||
completion-replace = true; # completions replace entire word
|
||||
|
||||
indent-heuristic = "tree-sitter"; # how indentation is computed
|
||||
# TODO: make this configurable (enabled on myputer, disabled on lolcathost)
|
||||
middle-click-paste = true;
|
||||
insert-final-newline = true; # append newline to file on write
|
||||
|
||||
gutters = [
|
||||
"diagnostics"
|
||||
"spacer"
|
||||
"line-numbers"
|
||||
"spacer"
|
||||
"diff"
|
||||
];
|
||||
|
||||
whitespace = {
|
||||
render = {
|
||||
space = "none"; # "all"
|
||||
tab = "none"; #"all"
|
||||
nbsp = "none";
|
||||
nnbsp = "none";
|
||||
newline = "none";
|
||||
};
|
||||
characters = {
|
||||
space = "·";
|
||||
nbsp = "⍽";
|
||||
nnbsp = "␣";
|
||||
tab = "→";
|
||||
newline = "⤶";
|
||||
tabpad = "·"; # Tabs will look like "→···" (depending on tab width)
|
||||
};
|
||||
};
|
||||
|
||||
indent-guides = {
|
||||
render = true;
|
||||
character = "▏"; # "|"
|
||||
skip-levels = 1;
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable = true;
|
||||
auto-signature-help = true; # hints for function parameters
|
||||
display-inlay-hints = true; # inline hints
|
||||
snippets = true;
|
||||
};
|
||||
|
||||
cursor-shape = {
|
||||
normal = "block";
|
||||
insert = "bar";
|
||||
select = "block";
|
||||
};
|
||||
|
||||
file-picker = {
|
||||
hidden = true; # show hidden files
|
||||
follow-symlinks = true;
|
||||
deduplicate-links = true;
|
||||
git-ignore = false; # dont read .gitignore files
|
||||
ignore = true; # use .ignore for helix instead of .gitignore
|
||||
};
|
||||
|
||||
statusline = {
|
||||
left = [
|
||||
"mode"
|
||||
"spacer"
|
||||
"version-control"
|
||||
"spinner"
|
||||
];
|
||||
center = [
|
||||
"file-name"
|
||||
"read-only-indicator"
|
||||
"file-modification-indicator"
|
||||
];
|
||||
right = [
|
||||
"position"
|
||||
"total-line-numbers"
|
||||
"file-encoding"
|
||||
"file-line-ending"
|
||||
"file-type"
|
||||
];
|
||||
separator = "|";
|
||||
mode.normal = "NORMAL";
|
||||
mode.insert = "INSERT";
|
||||
mode.select = "SELECT";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
languages.language = [
|
||||
{
|
||||
name = "nix";
|
||||
indent = {
|
||||
tab-width = 2;
|
||||
unit = " ";
|
||||
};
|
||||
block-comment-tokens = {
|
||||
start = "/*";
|
||||
end = "*/";
|
||||
};
|
||||
auto-format = true;
|
||||
formatter.command = "${pkgs.alejandra}/bin/alejandra";
|
||||
}
|
||||
{
|
||||
name = "python";
|
||||
indent = {
|
||||
tab-width = 4;
|
||||
unit = " ";
|
||||
};
|
||||
auto-format = false; # my python is beautiful ^_^
|
||||
rulers = [80];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
24
homes/modules/editor/nixvim.nix
Normal file
24
homes/modules/editor/nixvim.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
# TODO: allow clipboard to be configurable based on system clipboard
|
||||
colorschemes.dracula.enable = true;
|
||||
plugins = {
|
||||
lualine.enable = true;
|
||||
treesitter.enable = true;
|
||||
};
|
||||
|
||||
opts = {
|
||||
number = true;
|
||||
tabstop = 4;
|
||||
softtabstop = 4;
|
||||
shiftwidth = 4;
|
||||
};
|
||||
|
||||
clipboard.providers.wl-copy.enable = true;
|
||||
};
|
||||
}
|
||||
13
homes/modules/firefox.nix
Normal file
13
homes/modules/firefox.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
policies = {
|
||||
#BlockAboutConfig = true;
|
||||
DefaultDownloadDirectory = "\${home}/downloads";
|
||||
};
|
||||
};
|
||||
}
|
||||
18
homes/modules/fish.nix
Normal file
18
homes/modules/fish.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
interactiveShellInit = ''
|
||||
set -g fish_greeting "Welcome weary traveler to my shop"
|
||||
'';
|
||||
plugins = [
|
||||
{
|
||||
name = "grc";
|
||||
src = pkgs.fishPlugins.grc.src;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
11
homes/modules/git.nix
Normal file
11
homes/modules/git.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "Emile Clark-Boman";
|
||||
userEmail = "eclarkboman@gmail.com";
|
||||
};
|
||||
}
|
||||
29
homes/modules/hypr/hypridle.nix
Normal file
29
homes/modules/hypr/hypridle.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
ignore_dbus_inhibit = false;
|
||||
lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
||||
before_sleep_cmd = "loginctl lock-session";
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
};
|
||||
|
||||
listener = [
|
||||
{
|
||||
timeout = 600;
|
||||
on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
|
||||
}
|
||||
|
||||
{
|
||||
timeout = 660;
|
||||
on-timeout = "systemctl suspend";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
0
homes/modules/hypr/hyprland.nix
Normal file
0
homes/modules/hypr/hyprland.nix
Normal file
118
homes/modules/hypr/hyprlock.nix
Normal file
118
homes/modules/hypr/hyprlock.nix
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
background = {
|
||||
monitor = "";
|
||||
path = "$HOME/downloads/wallpaper/1380597.png"; # only png supported for now
|
||||
# color = $color1
|
||||
|
||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||
blur_size = 4;
|
||||
blur_passes = 3; # 0 disables blurring
|
||||
noise = 0.0117;
|
||||
contrast = 1.3000; # Vibrant!!!
|
||||
brightness = 0.8000;
|
||||
vibrancy = 0.2100;
|
||||
vibrancy_darkness = 0.0;
|
||||
};
|
||||
label = [
|
||||
{
|
||||
# Hours
|
||||
monitor = "";
|
||||
text = ''cmd[update:1000] echo "<b><big> $(date +"%H") </big></b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 112;
|
||||
font_family = "Geist Mono 10";
|
||||
shadow_passes = 3;
|
||||
shadow_size = 4;
|
||||
|
||||
position = "0, 240";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
{
|
||||
# Minutes
|
||||
monitor = "";
|
||||
text = ''cmd[update:1000] echo "<b><big> $(date +"%M") </big></b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 112;
|
||||
font_family = "Geist Mono 10";
|
||||
shadow_passes = 3;
|
||||
shadow_size = 4;
|
||||
|
||||
position = "0, 120";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
# Today
|
||||
{
|
||||
monitor = "";
|
||||
text = ''cmd[update:18000000] echo "<b><big> "$(date +'%A')" </big></b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 22;
|
||||
font_family = "JetBrainsMono Nerd Font 10";
|
||||
|
||||
position = "0, 30";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
# Week
|
||||
{
|
||||
monitor = "";
|
||||
text = ''cmd[update:18000000] echo "<b> "$(date +'%d %b')" </b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 18;
|
||||
font_family = "JetBrainsMono Nerd Font 10";
|
||||
|
||||
position = "0, 6";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
{
|
||||
# Degrees
|
||||
monitor = "";
|
||||
# get temperature in Brisbane
|
||||
text = ''cmd[update:18000000] echo "<b>Feels like<big> $(curl -s 'wttr.in/bne?format=%t' | tr -d '+') </big></b>"'';
|
||||
color = "rgb(255, 255, 255, 1)";
|
||||
font_size = 18;
|
||||
font_family = "Geist Mono 10";
|
||||
|
||||
position = "0, 40";
|
||||
halign = "center";
|
||||
valign = "bottom";
|
||||
}
|
||||
];
|
||||
|
||||
input-field = {
|
||||
monitor = "";
|
||||
size = "300, 50";
|
||||
outline_thickness = 3;
|
||||
|
||||
dots_size = 0.26; # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.64; # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true;
|
||||
dots_rouding = -1;
|
||||
|
||||
rounding = 22;
|
||||
outer_color = "rgb(255, 0, 0, 1)";
|
||||
inner_color = "rgb(0, 255, 0, 1)";
|
||||
font_color = "rgb(0, 0, 255, 1)";
|
||||
fade_on_empty = true;
|
||||
placeholder_text = "!!Super Secret!!"; # Text rendered in the input box when it's empty.
|
||||
|
||||
position = "0, 120";
|
||||
halign = "center";
|
||||
valign = "bottom";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
60
homes/modules/kanshi.nix
Normal file
60
homes/modules/kanshi.nix
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# Change monitor positions
|
||||
# TODO: find a way to make this modular (ie put something different for my laptop)
|
||||
# my idea is to have a "monitors" module and use kanshi for wayland
|
||||
services.kanshi = {
|
||||
enable = true;
|
||||
systemdTarget = "hyprland-session.target";
|
||||
# You can find your monitors in hyprland by using `hyprctl monitors all`
|
||||
settings = [
|
||||
{
|
||||
# 1920x1080@144 gaming monitor
|
||||
output.criteria = "HDMI-A-1";
|
||||
output.mode = "1920x1080@119.98Hz";
|
||||
output.scale = 1.0;
|
||||
output.adaptiveSync = false; # Variable Refresh Rate (this can be changed for gaming)
|
||||
}
|
||||
{
|
||||
# 4k side monitor
|
||||
output.criteria = "DP-2";
|
||||
output.mode = "3840x2160@60.00Hz";
|
||||
output.scale = 2.0;
|
||||
}
|
||||
{
|
||||
# laptop builtin screen
|
||||
output.criteria = "eDP-1";
|
||||
output.mode = "1920x1080@60.02Hz";
|
||||
output.scale = 1.0;
|
||||
}
|
||||
|
||||
{
|
||||
# This is my dual-monitor desktop setup
|
||||
profile.name = "myputer";
|
||||
profile.outputs = [
|
||||
{
|
||||
criteria = "DP-2";
|
||||
position = "0,0";
|
||||
}
|
||||
{
|
||||
criteria = "HDMI-A-1";
|
||||
position = "3840,0";
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
# This is my laptop (lolcathost) :)
|
||||
profile.name = "lolcathost";
|
||||
profile.outputs = [
|
||||
{
|
||||
criteria = "eDP-1";
|
||||
position = "0,0";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
16
homes/modules/nixcord.nix
Normal file
16
homes/modules/nixcord.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.nixcord = {
|
||||
enable = true;
|
||||
config = {
|
||||
frameless = true;
|
||||
plugins = {
|
||||
# TODO: remove this plugin
|
||||
hideAttachments.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
68
homes/modules/rio.nix
Normal file
68
homes/modules/rio.nix
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# The terminal I use
|
||||
# TODO: this is dependent on nvim being installed
|
||||
# TODO: make this into a module with a configurable editor option
|
||||
programs.rio = {
|
||||
enable = true;
|
||||
# Rio Config Docs: https://raphamorim.io/rio/docs/config
|
||||
settings = {
|
||||
theme = "dracula";
|
||||
hide-mouse-cursor-when-typing = true;
|
||||
|
||||
use-fork = true; # fork (dont spawn) Rio
|
||||
|
||||
padding-x = 10;
|
||||
padding-y = [15 10]; # top, left
|
||||
|
||||
# lines = (accumulated scroll * multiplier / divider)
|
||||
scroll = {
|
||||
multiplier = 3.0;
|
||||
divider = 1.0;
|
||||
};
|
||||
|
||||
fonts = {
|
||||
size = 15;
|
||||
features = [];
|
||||
|
||||
regular = {
|
||||
family = "JetBrainsMono Nerd Font"; # FiraCode
|
||||
style = "Normal";
|
||||
weight = 400;
|
||||
};
|
||||
|
||||
bold = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "Normal";
|
||||
weight = 800;
|
||||
};
|
||||
|
||||
italic = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "Italic";
|
||||
weight = 400;
|
||||
};
|
||||
|
||||
bold-italic = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
style = "Italic";
|
||||
weight = 800;
|
||||
};
|
||||
};
|
||||
|
||||
# Run when the `OpenConfigEditor` keybinding is triggered
|
||||
editor = {
|
||||
program = "hx"; # helix
|
||||
args = [];
|
||||
};
|
||||
|
||||
renderer = {
|
||||
performance = "High";
|
||||
backend = "Automatic"; # Vulkan
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
13
homes/modules/rofi.nix
Normal file
13
homes/modules/rofi.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
font = "JetBrains Mono Nerd Font 10";
|
||||
location = "center";
|
||||
terminal = "${pkgs.rio}/bin/rio";
|
||||
};
|
||||
}
|
||||
183
homes/modules/wofi.nix
Executable file
183
homes/modules/wofi.nix
Executable file
|
|
@ -0,0 +1,183 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.wofi = {
|
||||
enable = true;
|
||||
settings = {
|
||||
location = "center";
|
||||
allow_markup = true;
|
||||
width = 250;
|
||||
};
|
||||
# Force the style to stop Stylix being a bitch and overwriting it
|
||||
style = lib.mkForce ''
|
||||
@define-color rosewater #f2d5cf;
|
||||
@define-color rosewater-rgb rgb(242, 213, 207);
|
||||
@define-color flamingo #eebebe;
|
||||
@define-color flamingo-rgb rgb(238, 190, 190);
|
||||
@define-color pink #f4b8e4;
|
||||
@define-color pink-rgb rgb(244, 184, 228);
|
||||
@define-color mauve #ca9ee6;
|
||||
@define-color mauve-rgb rgb(202, 158, 230);
|
||||
@define-color red #e78284;
|
||||
@define-color red-rgb rgb(231, 130, 132);
|
||||
@define-color maroon #ea999c;
|
||||
@define-color maroon-rgb rgb(234, 153, 156);
|
||||
@define-color peach #ef9f76;
|
||||
@define-color peach-rgb rgb(239, 159, 118);
|
||||
@define-color yellow #e5c890;
|
||||
@define-color yellow-rgb rgb(229, 200, 144);
|
||||
@define-color green #a6d189;
|
||||
@define-color green-rgb rgb(166, 209, 137);
|
||||
@define-color teal #81c8be;
|
||||
@define-color teal-rgb rgb(129, 200, 190);
|
||||
@define-color sky #99d1db;
|
||||
@define-color sky-rgb rgb(153, 209, 219);
|
||||
@define-color sapphire #85c1dc;
|
||||
@define-color sapphire-rgb rgb(133, 193, 220);
|
||||
@define-color blue #8caaee;
|
||||
@define-color blue-rgb rgb(140, 170, 238);
|
||||
@define-color lavender #babbf1;
|
||||
@define-color lavender-rgb rgb(186, 187, 241);
|
||||
@define-color text #c6d0f5;
|
||||
@define-color text-rgb rgb(198, 208, 245);
|
||||
@define-color subtext1 #b5bfe2;
|
||||
@define-color subtext1-rgb rgb(181, 191, 226);
|
||||
@define-color subtext0 #a5adce;
|
||||
@define-color subtext0-rgb rgb(165, 173, 206);
|
||||
@define-color overlay2 #949cbb;
|
||||
@define-color overlay2-rgb rgb(148, 156, 187);
|
||||
@define-color overlay1 #838ba7;
|
||||
@define-color overlay1-rgb rgb(131, 139, 167);
|
||||
@define-color overlay0 #737994;
|
||||
@define-color overlay0-rgb rgb(115, 121, 148);
|
||||
@define-color surface2 #626880;
|
||||
@define-color surface2-rgb rgb(98, 104, 128);
|
||||
@define-color surface1 #51576d;
|
||||
@define-color surface1-rgb rgb(81, 87, 109);
|
||||
@define-color surface0 #414559;
|
||||
@define-color surface0-rgb rgb(65, 69, 89);
|
||||
@define-color base #303446;
|
||||
@define-color base-rgb rgb(48, 52, 70);
|
||||
@define-color mantle #292c3c;
|
||||
@define-color mantle-rgb rgb(41, 44, 60);
|
||||
@define-color crust #232634;
|
||||
@define-color crust-rgb rgb(35, 38, 52);
|
||||
|
||||
* {
|
||||
font-family: 'FiraCode Nerd Font';
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
/* Window */
|
||||
window {
|
||||
margin: 0px;
|
||||
padding: 10px;
|
||||
border: 0.16em solid @teal;
|
||||
border-radius: 0.5em;
|
||||
background-color: @base;
|
||||
animation: slideIn 0.25s ease-in-out both;
|
||||
}
|
||||
|
||||
/* Slide In */
|
||||
@keyframes slideIn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Inner Box */
|
||||
#inner-box {
|
||||
margin: 5px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
background-color: @base;
|
||||
/*animation: fadeIn 0.5s ease-in-out both;*/
|
||||
}
|
||||
|
||||
/* Fade In */
|
||||
@keyframes fadeIn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Outer Box */
|
||||
#outer-box {
|
||||
margin: 5px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
/* Scroll */
|
||||
#scroll {
|
||||
margin: 0px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
/* Input */
|
||||
#input {
|
||||
margin: 5px 20px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
border-radius: 0.25em;
|
||||
color: @text;
|
||||
background-color: @base;
|
||||
animation: fadeIn 0.25s ease-in-out both;
|
||||
}
|
||||
|
||||
#input image {
|
||||
border: none;
|
||||
color: @red;
|
||||
}
|
||||
|
||||
#input * {
|
||||
outline: 4px solid @red!important;
|
||||
}
|
||||
|
||||
/* Text */
|
||||
#text {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
color: @text;
|
||||
animation: fadeIn 0.5s ease-in-out both;
|
||||
}
|
||||
|
||||
#entry {
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
#entry arrow {
|
||||
border: none;
|
||||
color: @teal;
|
||||
}
|
||||
|
||||
/* Selected Entry */
|
||||
#entry:selected {
|
||||
border: 0.10em solid @teal;
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
|
||||
#entry:selected #text {
|
||||
color: @teal;
|
||||
}
|
||||
|
||||
#entry:drop(active) {
|
||||
background-color: @lavender!important;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue