This commit is contained in:
zack 2024-12-19 21:47:51 -05:00
parent ed77ae6e6b
commit bf86126a00
No known key found for this signature in database
GPG key ID: 5F873416BCF59F35
22 changed files with 1490 additions and 243 deletions

View file

@ -0,0 +1,80 @@
{
options,
config,
lib,
inputs,
pkgs,
...
}:
with lib;
with lib.custom; let
cfg = config.apps.helpers.snc;
in {
options.apps.helpers.snc = with types; {
enable = mkBoolOpt false "Enable Sway Notification Center";
};
config = mkIf cfg.enable {
home = {
packages = with pkgs; [swaynotificationcenter];
# Copy the theme file to the correct location
file.".config/swaync/style.css".source = ./theme/ctp.css;
# Create default config file
file.".config/swaync/config.json".text = builtins.toJSON {
"$schema" = "/etc/xdg/swaync/configSchema.json";
"positionX" = "right";
"positionY" = "top";
"layer" = "overlay";
"control-center-margin-top" = 0;
"control-center-margin-bottom" = 0;
"control-center-margin-right" = 0;
"control-center-margin-left" = 0;
"notification-icon-size" = 64;
"notification-body-image-height" = 100;
"notification-body-image-width" = 200;
"timeout" = 10;
"timeout-low" = 5;
"timeout-critical" = 0;
"fit-to-screen" = true;
"control-center-width" = 500;
"notification-window-width" = 500;
"keyboard-shortcuts" = true;
"image-visibility" = "when-available";
"transition-time" = 200;
"hide-on-clear" = false;
"hide-on-action" = true;
"script-fail-notify" = true;
"scripts" = {};
"notification-visibility" = {};
"widgets" = [
"title"
"dnd"
"notifications"
];
};
};
# Add systemd user service
systemd.user.services.swaync = {
Unit = {
Description = "Sway Notification Center";
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
};
Service = {
Type = "simple";
ExecStart = "${pkgs.swaynotificationcenter}/bin/swaync";
ExecReload = "${pkgs.swaynotificationcenter}/bin/swaync-client --reload-config";
Restart = "always";
RestartSec = 3;
};
Install = {
WantedBy = ["graphical-session.target"];
};
};
};
}

View file

@ -0,0 +1,451 @@
* {
all: unset;
font-size: 14px;
font-family: "Iosevka";
transition: 200ms;
}
trough highlight {
background: #cdd6f4;
}
scale trough {
margin: 0rem 1rem;
background-color: #313244;
min-height: 8px;
min-width: 70px;
}
slider {
background-color: #89b4fa;
}
.floating-notifications.background .notification-row .notification-background {
box-shadow:
0 0 8px 0 rgba(0, 0, 0, 0.8),
inset 0 0 0 1px #313244;
border-radius: 12.6px;
margin: 18px;
background-color: #1e1e2e;
color: #cdd6f4;
padding: 0;
}
.floating-notifications.background
.notification-row
.notification-background
.notification {
padding: 7px;
border-radius: 12.6px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification.critical {
box-shadow: inset 0 0 7px 0 #f38ba8;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content {
margin: 7px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content
.summary {
color: #cdd6f4;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content
.time {
color: #a6adc8;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content
.body {
color: #cdd6f4;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> * {
min-height: 3.4em;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action {
border-radius: 7px;
color: #cdd6f4;
background-color: #313244;
box-shadow: inset 0 0 0 1px #45475a;
margin: 7px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:hover {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #313244;
color: #cdd6f4;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:active {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #74c7ec;
color: #cdd6f4;
}
.floating-notifications.background
.notification-row
.notification-background
.close-button {
margin: 7px;
padding: 2px;
border-radius: 6.3px;
color: #1e1e2e;
background-color: #f38ba8;
}
.floating-notifications.background
.notification-row
.notification-background
.close-button:hover {
background-color: #eba0ac;
color: #1e1e2e;
}
.floating-notifications.background
.notification-row
.notification-background
.close-button:active {
background-color: #f38ba8;
color: #1e1e2e;
}
.control-center {
box-shadow:
0 0 8px 0 rgba(0, 0, 0, 0.8),
inset 0 0 0 1px #313244;
border-radius: 12.6px;
margin: 18px;
background-color: #1e1e2e;
color: #cdd6f4;
padding: 14px;
}
.control-center .widget-title > label {
color: #cdd6f4;
font-size: 1.3em;
}
.control-center .widget-title button {
border-radius: 7px;
color: #cdd6f4;
background-color: #313244;
box-shadow: inset 0 0 0 1px #45475a;
padding: 8px;
}
.control-center .widget-title button:hover {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #585b70;
color: #cdd6f4;
}
.control-center .widget-title button:active {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #74c7ec;
color: #1e1e2e;
}
.control-center .notification-row .notification-background {
border-radius: 7px;
color: #cdd6f4;
background-color: #313244;
box-shadow: inset 0 0 0 1px #45475a;
margin-top: 14px;
}
.control-center .notification-row .notification-background .notification {
padding: 7px;
border-radius: 7px;
}
.control-center
.notification-row
.notification-background
.notification.critical {
box-shadow: inset 0 0 7px 0 #f38ba8;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content {
margin: 7px;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content
.summary {
color: #cdd6f4;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content
.time {
color: #a6adc8;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content
.body {
color: #cdd6f4;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> * {
min-height: 3.4em;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action {
border-radius: 7px;
color: #cdd6f4;
background-color: #11111b;
box-shadow: inset 0 0 0 1px #45475a;
margin: 7px;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:hover {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #313244;
color: #cdd6f4;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:active {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #74c7ec;
color: #cdd6f4;
}
.control-center .notification-row .notification-background .close-button {
margin: 7px;
padding: 2px;
border-radius: 6.3px;
color: #1e1e2e;
background-color: #eba0ac;
}
.close-button {
border-radius: 6.3px;
}
.control-center .notification-row .notification-background .close-button:hover {
background-color: #f38ba8;
color: #1e1e2e;
}
.control-center
.notification-row
.notification-background
.close-button:active {
background-color: #f38ba8;
color: #1e1e2e;
}
.control-center .notification-row .notification-background:hover {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #7f849c;
color: #cdd6f4;
}
.control-center .notification-row .notification-background:active {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #74c7ec;
color: #cdd6f4;
}
.notification.critical progress {
background-color: #f38ba8;
}
.notification.low progress,
.notification.normal progress {
background-color: #89b4fa;
}
.control-center-dnd {
margin-top: 5px;
border-radius: 8px;
background: #313244;
border: 1px solid #45475a;
box-shadow: none;
}
.control-center-dnd:checked {
background: #313244;
}
.control-center-dnd slider {
background: #45475a;
border-radius: 8px;
}
.widget-dnd {
margin: 0px;
font-size: 1.1rem;
}
.widget-dnd > switch {
font-size: initial;
border-radius: 8px;
background: #313244;
border: 1px solid #45475a;
box-shadow: none;
}
.widget-dnd > switch:checked {
background: #313244;
}
.widget-dnd > switch slider {
background: #45475a;
border-radius: 8px;
border: 1px solid #6c7086;
}
.widget-mpris .widget-mpris-player {
background: #313244;
padding: 7px;
}
.widget-mpris .widget-mpris-title {
font-size: 1.2rem;
}
.widget-mpris .widget-mpris-subtitle {
font-size: 0.8rem;
}
.widget-menubar > box > .menu-button-bar > button > label {
font-size: 3rem;
padding: 0.5rem 2rem;
}
.widget-menubar > box > .menu-button-bar > :last-child {
color: #f38ba8;
}
.power-buttons button:hover,
.powermode-buttons button:hover,
.screenshot-buttons button:hover {
background: #313244;
}
.control-center .widget-label > label {
color: #cdd6f4;
font-size: 2rem;
}
.widget-buttons-grid {
padding-top: 1rem;
}
.widget-buttons-grid > flowbox > flowboxchild > button label {
font-size: 2.5rem;
}
.widget-volume {
padding-top: 1rem;
}
.widget-volume label {
font-size: 1.5rem;
color: #74c7ec;
}
.widget-volume trough highlight {
background: #74c7ec;
}
.widget-backlight trough highlight {
background: #f9e2af;
}
.widget-backlight label {
font-size: 1.5rem;
color: #f9e2af;
}
.widget-backlight .KB {
padding-bottom: 1rem;
}
.image {
padding-right: 0.5rem;
}

View file

@ -0,0 +1,173 @@
{
config,
lib,
pkgs,
...
}:
with lib;
with lib.custom; let
cfg = config.apps.helpers.rofi;
in {
options.apps.helpers.rofi = with types; {
enable = mkBoolOpt false "Enable Rofi";
};
config = mkIf cfg.enable {
programs.rofi = {
enable = true;
package = pkgs.rofi;
# Basic configuration
terminal = "ghostty";
font = "Lexend Medium 16px";
extraConfig = {
modi = "drun";
show-icons = true;
drun-display-format = "{icon} {name}";
location = 0;
hide-scrollbar = true;
disable-history = false;
display-drun = " Applications";
display-run = " Run";
display-calc = " Calculator";
display-emoji = " Emojis";
sidebar-mode = false;
# # Timeout settings
# timeout = {
# action = "kb-cancel";
# delay = 0;
# };
#
# filebrowser = {
# "directories-first" = true;
# "sorting-method" = "name";
# };
};
# Theme configuration
theme = let
inherit (config.lib.formats.rasi) mkLiteral;
in {
"*" = {
background = "#181825";
prompt = "#1e1e2e";
border = "#313244";
text = "#cdd6f4";
stext = "#45475a";
select = "#1e1e2e";
"background-color" = mkLiteral "transparent";
"text-color" = mkLiteral "@text";
margin = 0;
padding = 0;
};
"window" = {
transparency = "real";
location = mkLiteral "center";
anchor = mkLiteral "center";
width = mkLiteral "32em";
"x-offset" = mkLiteral "0px";
"y-offset" = mkLiteral "0px";
enabled = true;
border = mkLiteral "2px solid";
"border-color" = mkLiteral "@border";
"border-radius" = mkLiteral "4px";
"background-color" = mkLiteral "@background";
cursor = mkLiteral "default";
};
"inputbar" = {
enabled = true;
"background-color" = mkLiteral "@prompt";
orientation = mkLiteral "horizontal";
children = mkLiteral "[ \"entry\" ]";
};
"entry" = {
enabled = true;
padding = mkLiteral "0.75em 1.25em";
cursor = mkLiteral "text";
placeholder = " Search application...";
"background-color" = mkLiteral "@background";
"placeholder-color" = mkLiteral "@stext";
};
"listview" = {
enabled = true;
columns = 1;
lines = 5;
cycle = true;
dynamic = true;
scrollbar = false;
layout = mkLiteral "vertical";
reverse = false;
"fixed-height" = true;
"fixed-columns" = true;
margin = mkLiteral "0.5em 0 0.75em";
cursor = mkLiteral "default";
};
"element" = {
enabled = true;
margin = mkLiteral "0 0.75em";
padding = mkLiteral "0.5em 1em";
cursor = mkLiteral "pointer";
orientation = mkLiteral "horizontal";
};
"element-icon" = {
size = mkLiteral "24px";
};
"element normal.normal" = {
"background-color" = mkLiteral "inherit";
"text-color" = mkLiteral "inherit";
};
"element selected.normal" = {
border = mkLiteral "2px solid";
"border-color" = mkLiteral "@border";
"border-radius" = mkLiteral "8px";
"background-color" = mkLiteral "@select";
};
"element-text" = {
highlight = mkLiteral "bold";
cursor = mkLiteral "inherit";
"vertical-align" = mkLiteral "0.5";
"horizontal-align" = mkLiteral "0.0";
font = mkLiteral ''"Lexend Medium 16px"'';
};
};
};
# Create the colors.rasi file
xdg.configFile."rofi/colors.rasi".text = ''
* {
background: #181825;
prompt: #1e1e2e;
border: #313244;
text: #cdd6f4;
stext: #45475a;
select: #1e1e2e;
}
'';
# Create the clip theme
xdg.configFile."rofi/clip.rasi".text = ''
@theme "cat-mocha"
@import "./colors.rasi"
entry {
placeholder: " Search clipboard...";
}
element-icon {
enabled: false;
size: 0;
}
'';
};
}

View file

@ -19,153 +19,250 @@ in {
enable = true;
style = ''
* {
color: @text;
font-family: Iosevka Nerd Font;
font-weight: bold;
font-size: 14px;
min-height: 0;
min-width: 0;
font-family: Lexend, "JetBrainsMono NFP";
font-size: 16px;
font-weight: 600;
}
window#waybar {
background-color: rgba(0, 0, 0, 0);
transition-property: background-color;
transition-duration: 0.5s;
/* background-color: #1e1e2e; */
/* background-color: #181825; */
background-color: #11111b;
/* background-color: rgba(24, 24, 37, 0.6); */
}
#waybar > box {
margin: 10px 15px 0px;
background-color: @base;
border: 2px solid @mauve;
#workspaces button {
padding: 0.3rem 0.6rem;
margin: 0.4rem 0.25rem;
border-radius: 6px;
/* background-color: #181825; */
background-color: #1e1e2e;
color: #cdd6f4;
}
#workspaces button:hover {
color: #1e1e2e;
background-color: #cdd6f4;
}
#workspaces button.active {
background-color: #1e1e2e;
color: #89b4fa;
}
#workspaces button.urgent {
background-color: #1e1e2e;
color: #f38ba8;
}
#workspaces,
#window,
#idle_inhibitor,
#wireplumber,
#network,
#cpu,
#memory,
#battery,
#clock,
#power-profiles-daemon,
#pulseaudio,
#custom-logo,
#custom-power,
#custom-spotify,
#custom-notification,
#cpu,
#tray,
#waybar > box {
border-radius: 12px;
#memory,
#window,
#mpris {
padding: 0.3rem 0.6rem;
margin: 0.4rem 0.25rem;
border-radius: 6px;
/* background-color: #181825; */
background-color: #1e1e2e;
}
#workspaces * {
color: @red;
#mpris.playing {
color: #a6e3a1;
}
#idle_inhibitor {
color: @peach;
#mpris.paused {
color: #9399b2;
}
#window * {
color: @mauve;
#custom-sep {
padding: 0px;
color: #585b70;
}
#wireplumber {
color: @yellow;
window#waybar.empty #window {
background-color: transparent;
}
#network {
color: @green;
#cpu {
color: #94e2d5;
}
#power-profiles-daemon {
color: @teal;
}
#battery {
color: @blue;
#memory {
color: #cba6f7;
}
#clock {
color: @lavender;
color: #74c7ec;
}
#tray {
color: @text;
#clock.simpleclock {
color: #89b4fa;
}
#idle_inhibitor,
#wireplumber,
#network,
#cpu,
#memory,
#battery,
#clock,
#power-profiles-daemon,
#tray {
padding: 0 5px;
#window {
color: #cdd6f4;
}
#pulseaudio {
color: #b4befe;
}
#pulseaudio.muted {
color: #a6adc8;
}
#custom-logo {
color: #89b4fa;
}
#custom-power {
color: #f38ba8;
}
tooltip {
background-color: #181825;
border: 2px solid #89b4fa;
}
'';
settings = {
mainBar = {
layer = "top";
layer = "bottom";
position = "top";
spacing = 4;
modules-left = [
"hyprland/workspaces"
"hyprland/window"
];
modules-center = [
];
modules-right = [
"idle_inhibitor"
"wireplumber"
"network"
"power-profiles-daemon"
"battery"
height = 40;
spacing = 2;
exclusive = true;
"gtk-layer-shell" = true;
passthrough = false;
"fixed-center" = true;
"modules-left" = ["hyprland/workspaces" "hyprland/window"];
"modules-center" = ["mpris"];
"modules-right" = [
"cpu"
"memory"
"pulseaudio"
"clock"
"clock#simpleclock"
"tray"
"custom/notification"
"custom/power"
];
"custom/spotify" = {
format = " {}";
"return-type" = "json";
"on-click" = "playerctl -p spotify play-pause";
"on-click-right" = "spotifatius toggle-liked";
"on-click-middle" = "playerctl -p spotify next";
exec = "spotifatius monitor";
};
mpris = {
player = "spotify";
"dynamic-order" = ["artist" "title"];
format = "{player_icon} {dynamic}";
"format-paused" = "{status_icon} <i>{dynamic}</i>";
"status-icons" = {
paused = "";
};
"player-icons" = {
default = "";
};
};
"hyprland/workspaces" = {
disable-scroll = true;
all-outputs = true;
warp-on-scroll = false;
format = "{name}: {icon}";
format-icons = {
"urgent" = "";
"active" = "";
"default" = "";
};
"on-click" = "activate";
format = "{id}";
"all-outputs" = true;
"disable-scroll" = false;
"active-only" = false;
};
#cava = {
# cava_config = "$HOME/.config/cava/config";
# framerate = 60;
# bars = 16;
# method = "pipewire";
# format-icons = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ];
# bar_delimiter = 0;
#};
idle_inhibitor = {
format = "Idle: {icon} ";
format-icons = {
"deactivated" = "";
"activated" = "";
};
"hyprland/window" = {
format = "{title}";
};
wireplumber = {
format = "Volume: {icon} {volume}% ";
format-icons = ["" "" ""];
format-muted = "Muted ";
tray = {
"show-passive-items" = true;
spacing = 10;
};
"clock#simpleclock" = {
tooltip = false;
format = " {:%H:%M}";
};
clock = {
format = " {:%H:%M}";
format = " {:L%a %d %b}";
calendar = {
format = {
days = "<span weight='normal'>{}</span>";
months = "<span color='#cdd6f4'><b>{}</b></span>";
today = "<span color='#f38ba8' weight='700'><u>{}</u></span>";
weekdays = "<span color='#f9e2af'><b>{}</b></span>";
weeks = "<span color='#a6e3a1'><b>W{}</b></span>";
};
mode = "month";
"mode-mon-col" = 1;
"on-scroll" = 1;
};
"tooltip-format" = "<span color='#cdd6f4' font='Lexend 16'><tt><small>{calendar}</small></tt></span>";
};
network = {
format = " {essid} 󰓅 {signalStrength}";
cpu = {
format = " {usage}%";
tooltip = true;
interval = 1;
};
battery = {
format-icons = ["" "" "" "" ""];
format = "{icon} {capacity}%";
memory = {
format = " {used:0.1f}Gi";
};
pulseaudio = {
format = "{icon} {volume}%";
"format-muted" = " muted";
"format-icons" = {
headphone = "";
default = [" " " " " "];
};
"on-click" = "pavucontrol";
};
"custom/sep" = {
format = "|";
tooltip = false;
};
"custom/power" = {
tooltip = false;
"on-click" = "wlogout -p layer-shell &";
format = "";
};
"custom/notification" = {
escape = true;
exec = "swaync-client -swb";
"exec-if" = "which swaync-client";
format = "{icon}";
"format-icons" = {
none = "󰅺";
notification = "󰡟";
};
"on-click" = "sleep 0.1 && swaync-client -t -sw";
"return-type" = "json";
tooltip = false;
};
};
};

View file

@ -6,6 +6,24 @@ return {
news = { lazyvim = false },
},
},
{
"snacks.nvim",
opts = {
scroll = {
enabled = false,
},
dashboard = {
preset = {
header = [[
l
l ~
f_,)
]],
},
},
},
},
{
"catppuccin",
opts = { transparent_background = true, integrations = {
@ -34,16 +52,6 @@ return {
nerd_font_variant = "mono",
},
},
{
"karb94/neoscroll.nvim",
config = function()
require("neoscroll").setup({})
end,
},
{
"sphamba/smear-cursor.nvim",
opts = {},
},
{
"folke/snacks.nvim",
priority = 1000,

View file

@ -17,6 +17,11 @@ in {
config = mkIf cfg.enable {
catppuccin.pointerCursor.enable = true;
home.pointerCursor = {
gtk.enable = true;
x11.enable = true;
};
gtk = {
enable = true;
@ -27,12 +32,12 @@ in {
theme = {
name = "Tokyonight-Dark";
package = pkgs-unstable.tokyonight-gtk-theme;
package = pkgs.tokyonight-gtk-theme;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs-unstable.catppuccin-papirus-folders.override {
package = pkgs.catppuccin-papirus-folders.override {
accent = ctp.accent;
flavor = ctp.flavor;
};

View file

@ -0,0 +1,49 @@
{
pkgs,
lib,
config,
...
}:
with lib;
with pkgs; {
ytmp3 = ''
${getExe yt-dlp} -x --continue --add-metadata --embed-thumbnail --audio-format mp3 --audio-quality 0 --metadata-from-title="%(artist)s - %(title)s" --prefer-ffmpeg -o "%(title)s.%(ext)s"'';
cat = "${getExe bat} --style=plain";
vpn = "mullvad";
uuid = "cat /proc/sys/kernel/random/uuid";
grep = getExe ripgrep;
fzf = getExe skim;
untar = "tar -xvf";
untargz = "tar -xzf";
du = getExe du-dust;
ps = getExe procs;
lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\"";
deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo";
m = "mkdir -p";
fcd = "cd $(find -type d | fzf)";
l = "ls -lF --time-style=long-iso --icons";
sc = "sudo systemctl";
scu = "systemctl --user ";
la = "${getExe eza} -lah --tree";
ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension";
tree = "${getExe eza} --tree --icons --tree";
kys = "shutdown now";
gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE";
agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE";
tsm = "transmission-remote";
g = "git";
n = "nix";
r = "rebuild";
vm = "nixos-rebuild build-vm --flake ~/nixos#earth";
mnt = "udisksctl mount -b";
umnt = "udisksctl unmount -b";
burn = "pkill -9";
diff = "diff --color=auto";
wu = "vpn disconnect -w && awsvpnclient start --config ~/Downloads/cvpn-endpoint-085400ccc19bb4a17.ovpn";
"v" = "nvim";
".." = "cd ..";
"..." = "cd ../../";
"...." = "cd ../../../";
"....." = "cd ../../../../";
"......" = "cd ../../../../../";
}

View file

@ -0,0 +1,144 @@
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.custom; let
cfg = config.shells.fish;
in {
options.shells.fish = with types; {
enable = mkBoolOpt false "Enable Fish Configuration";
};
config = mkIf cfg.enable {
programs.fish = {
enable = true;
generateCompletions = true;
interactiveShellInit = ''
set -gx LC_ALL en_US.UTF-8
set -gx SSH_AUTH_SOCK /run/user/1000/keyring/ssh
set -gx FLAKE /home/zoey/nixos/
set -g FZF_PREVIEW_FILE_CMD "head -n 10"
set -g FZF_PREVIEW_DIR_CMD "ls"
'';
plugins = [
{
name = "foreign-env";
src = pkgs.fishPlugins.foreign-env.src;
}
{
name = "fzf.fish";
src = pkgs.fishPlugins.fzf-fish.src;
}
{
name = "z";
src = pkgs.fishPlugins.z.src;
}
{
name = "done";
src = pkgs.fishPlugins.done.src;
}
{
name = "colored-man-pages";
src = pkgs.fishPlugins.colored-man-pages.src;
}
];
functions = {
pf = ''
fzf --bind ctrl-y:preview-up,ctrl-e:preview-down \
--bind ctrl-b:preview-page-up,ctrl-f:preview-page-down \
--bind ctrl-u:preview-half-page-up,ctrl-d:preview-half-page-down \
--bind ctrl-k:up,ctrl-j:down \
--preview='bat --style=numbers --color=always --line-range :100 {}'
'';
ff = ''
for file in (pf)
set cmd "v $file"
echo $cmd
eval $cmd
end
'';
};
shellAliases = import ./aliases.nix {inherit pkgs lib config;};
};
home.packages = with pkgs; [
gnumake
# Runs programs without installing them
comma
# grep replacement
ripgrep
# ping, but with cool graph
gping
fzf
# dns client
dogdns
# neofetch but for git repos
onefetch
# neofetch but for cpu's
cpufetch
# download from yt and other websites
yt-dlp
zsh-history
# man pages for tiktok attention span mfs
tealdeer
# markdown previewer
glow
# profiling tool
hyperfine
imagemagick
ffmpeg-full
# preview images in terminal
catimg
# networking stuff
nmap
wget
# faster find
fd
# http request thingy
xh
# generate regex
grex
# json thingy
jq
# syncthnig for acoustic people
rsync
figlet
# Generate qr codes
qrencode
# script kidde stuff
hcxdumptool
hashcat
unzip
];
};
}

View file

@ -0,0 +1,51 @@
{
pkgs,
lib,
config,
...
}:
with lib;
with pkgs; {
ytmp3 = ''
${getExe yt-dlp} -x --continue --add-metadata --embed-thumbnail --audio-format mp3 --audio-quality 0 --metadata-from-title="%(artist)s - %(title)s" --prefer-ffmpeg -o "%(title)s.%(ext)s"'';
cat = "${getExe bat} --style=plain";
vpn = "mullvad";
uuid = "cat /proc/sys/kernel/random/uuid";
grep = getExe ripgrep;
fzf = getExe skim;
untar = "tar -xvf";
untargz = "tar -xzf";
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
du = getExe du-dust;
ps = getExe procs;
lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\"";
deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo";
m = "mkdir -p";
fcd = "cd $(find -type d | fzf)";
l = "ls -lF --time-style=long-iso --icons";
sc = "sudo systemctl";
scu = "systemctl --user ";
la = "${getExe eza} -lah --tree";
ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension";
tree = "${getExe eza} --tree --icons --tree";
kys = "shutdown now";
lv = "nvim -c \"normal '\''0\"";
gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE";
agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE";
tsm = "transmission-remote";
g = "git";
n = "nix";
r = "rebuild";
vm = "nixos-rebuild build-vm --flake ~/nixos#earth";
mnt = "udisksctl mount -b";
umnt = "udisksctl unmount -b";
burn = "pkill -9";
diff = "diff --color=auto";
wu = "vpn disconnect -w && awsvpnclient start --config ~/Downloads/cvpn-endpoint-085400ccc19bb4a17.ovpn";
"v" = "nvim";
".." = "cd ..";
"..." = "cd ../../";
"...." = "cd ../../../";
"....." = "cd ../../../../";
"......" = "cd ../../../../../";
}

View file

@ -0,0 +1,92 @@
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.custom; let
cfg = config.shells.nu;
in {
options.shells.nu = with types; {
enable = mkBoolOpt false "Enable Nushell Configuration";
};
config = mkIf cfg.enable {
programs.nushell = {
enable = true;
# Nushell doesn't need generateCompletions like fish
extraConfig = ''
# Environment variables
let-env LC_ALL = "en_US.UTF-8"
let-env SSH_AUTH_SOCK = "/run/user/1000/keyring/ssh"
let-env FLAKE = "/home/zoey/nixos/"
# FZF settings
let-env FZF_PREVIEW_FILE_CMD = "head -n 10"
let-env FZF_PREVIEW_DIR_CMD = "ls"
def pf [] {
fzf --bind ctrl-y:preview-up,ctrl-e:preview-down \
--bind ctrl-b:preview-page-up,ctrl-f:preview-page-down \
--bind ctrl-u:preview-half-page-up,ctrl-d:preview-half-page-down \
--bind ctrl-k:up,ctrl-j:down \
--preview='bat --style=numbers --color=always --line-range :100 {}'
}
def ff [] {
let files = (pf)
for file in $files {
let cmd = $"v ($file)"
echo $cmd
nu -c $cmd
}
}
'';
# Nushell handles plugins differently, you might want to use modules instead
# or configure external tools directly
extraEnv = ''
# Add any environment-specific configuration here
'';
# Import aliases (you'll need to convert fish aliases to Nushell format)
shellAliases = import ./aliases.nix {inherit pkgs lib config;};
};
home.packages = with pkgs; [
gnumake
comma
ripgrep
gping
fzf
dogdns
onefetch
cpufetch
yt-dlp
zsh-history
tealdeer
glow
hyperfine
imagemagick
ffmpeg-full
catimg
nmap
wget
fd
xh
grex
jq
rsync
figlet
qrencode
hcxdumptool
hashcat
unzip
];
};
}

View file

@ -48,22 +48,21 @@ in {
xwayland.enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
# systemd = {
# enable = true;
# enableXdgAutostart = true;
# variables = ["-all"];
# };
systemd = {
enable = true;
# enableXdgAutostart = true;
variables = ["-all"];
};
};
wayland.windowManager.hyprland.settings = with colors; {
exec-once = [
"pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\""
# "systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
# "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
# "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"zen"
"sleep 6;telegram-desktop"
"sleep 10;thunderbird"
"telegram-desktop"
"thunderbird"
"vesktop"
"spotify"
"slack"
@ -77,9 +76,9 @@ in {
bind =
[
''${mod},RETURN,exec,${pkgs.kitty}/bin/kitty''
''${mod},RETURN,exec,${pkgs.ghostty}/bin/ghostty''
"${mod},D,exec,killall anyrun || anyrun"
"${mod},D,exec,rofi -show drun"
"${mod},Q,killactive"
"${mod},M,exit"
"${mod},P,pseudo"
@ -139,13 +138,12 @@ in {
decoration = {
# fancy corners
rounding = 10;
rounding = 4;
# blur
blur = {
enabled = true;
size = 2;
passes = 5;
ignore_opacity = false;
size = 6;
passes = 2;
new_optimizations = 1;
contrast = 1;
brightness = 1;
@ -153,10 +151,10 @@ in {
shadow = {
# shadow config
enabled = true;
range = 60;
render_power = 5;
color = "rgba(07061f29)";
enabled = false;
# range = 60;
# render_power = 5;
# color = "rgba(07061f29)";
};
};
@ -166,11 +164,11 @@ in {
force_default_wallpaper = 0;
disable_hyprland_logo = true;
vfr = false;
vfr = true;
# dpms
mouse_move_enables_dpms = true; # enable dpms on mouse/touchpad action
key_press_enables_dpms = true; # enable dpms on keyboard action
# mouse_move_enables_dpms = true; # enable dpms on mouse/touchpad action
# key_press_enables_dpms = true; # enable dpms on keyboard action
disable_autoreload = true; # autoreload is unnecessary on nixos, because the config is readonly anyway
};
@ -218,6 +216,7 @@ in {
"workspace special silent, title:^(Firefox Sharing Indicator)$"
"workspace special silent, title:^(.*is sharing (your screen|a window)\.)$"
"opacity 0.9 override,class:^(zen)"
"workspace 5, class:^(thunderbird)$"
"workspace 4, title:^(.*(Disc|WebC)ord.*)$"
"workspace 4, class:^(.*Slack.*)$"
@ -233,12 +232,12 @@ in {
# # fake a tray to let apps start
# # https://github.com/nix-community/home-manager/issues/2064
# systemd.user.targets.tray = {
# Unit = {
# Description = "Home Manager System Tray";
# Requires = ["graphical-session-pre.target"];
# };
# };
systemd.user.targets.tray = {
Unit = {
Description = "Home Manager System Tray";
Requires = ["graphical-session-pre.target"];
};
};
systemd.user.services = {
swaybg = mkService {

View file

@ -19,13 +19,13 @@ in {
enable = true;
settings = {
spawn = [
"firefox"
"kitty"
"zen"
"ghostty"
];
map = {
normal = {
"${super} Return" = "spawn kitty";
"${super} Return" = "spawn ghostty";
"${super} Q" = "close";
"${super} M" = "exit";
"${super} D" = "spawn anyrun";