dotfiles/homes/me/default.nix

357 lines
7.5 KiB
Nix
Raw Normal View History

2024-10-30 19:45:26 +10:00
{
inputs,
outputs,
lib,
config,
pkgs,
...
}:
{
nixpkgs = {
2024-10-30 23:25:57 +10:00
config.allowUnfree = true;
2024-10-30 19:45:26 +10:00
};
2024-10-30 23:25:57 +10:00
imports = [
# inputs.spicetify-nix.homeManagerModules.default
#./wofi.nix
];
/*
programs.spicetify =
let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in
{
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblock
hidePodcasts
shuffle # shuffle+ (special characters are sanitized out of extension names)
];
theme = spicePkgs.themes.catppuccin;
colorScheme = "mocha";
};
*/
2024-10-30 19:45:26 +10:00
home = {
username = "me";
homeDirectory = "/home/me";
};
programs = {
# these are both required for home-manager to work
home-manager.enable = true;
git.enable = true;
2024-10-30 23:25:57 +10:00
# like `/bin/cat` but with syntax highlighting
# TODO: change the pager (maybe use Github:sachaos/viddy instead)
bat = {
enable = true;
config = {
pager = "less -FR";
theme = "Dracula";
};
};
/*
spicetify =
let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in
{
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblock
hidePodcasts
#shuffle
];
theme = spicePkgs.themes.catppuccin;
colorScheme = "mocha";
};
*/
2024-10-30 19:45:26 +10:00
# 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
2024-10-30 23:25:57 +10:00
padding-x = 10;
padding-y = [ 15 10 ]; # top, left
# lines = (accumulated scroll * multiplier / divider)
scroll = {
multiplier = 1.0;
divider = 1.0;
};
2024-10-30 19:45:26 +10:00
fonts = {
2024-10-30 23:25:57 +10:00
size = 15;
features = [];
2024-10-30 19:45:26 +10:00
regular = {
2024-10-30 23:25:57 +10:00
family = "FiraCode Nerd Font"; # "IosevkaTerm Nerd Font"
2024-10-30 19:45:26 +10:00
style = "Normal";
weight = 400;
};
bold = {
2024-10-30 23:25:57 +10:00
family = "FiraCode Nerd Font";
2024-10-30 19:45:26 +10:00
style = "Normal";
weight = 800;
};
italic = {
2024-10-30 23:25:57 +10:00
family = "FiraCode Nerd Font";
2024-10-30 19:45:26 +10:00
style = "Italic";
weight = 400;
};
bold-italic = {
2024-10-30 23:25:57 +10:00
family = "FiraCode Nerd Font";
2024-10-30 19:45:26 +10:00
style = "Italic";
weight = 800;
};
};
# Run when the `OpenConfigEditor` keybinding is triggered
editor = {
program = "nvim";
args = [];
};
2024-10-30 23:25:57 +10:00
renderer = {
performance = "High";
backend = "Automatic"; # Vulkan
};
};
};
wofi = {
enable = true;
settings = {
location = "center";
allow_markup = true;
width = 250;
2024-10-30 19:45:26 +10:00
};
2024-10-30 23:25:57 +10:00
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';
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;
}
'';
2024-10-30 19:45:26 +10:00
};
};
# Nicely reload system units when changing configs
systemd.user.startServices = "sd-switch";
home.stateVersion = "24.05"; # don't change this
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;
}
{ # This is my default setup
profile.name = "default";
profile.outputs = [
{
criteria = "DP-2";
position = "0,0";
}
{
criteria = "HDMI-A-1";
position = "3840,0";
}
];
}
];
};
};
}