1623 lines
44 KiB
Nix
1623 lines
44 KiB
Nix
{ config, lib, pkgs, inputs, ... }:
|
||
|
||
let
|
||
laptop = builtins.readFile "/etc/hostname" == ''
|
||
syl
|
||
'';
|
||
in {
|
||
imports = [
|
||
./modules/hyprland.nix
|
||
./modules/rofi.nix
|
||
# ags.homeManagerModules.default
|
||
# ./modules/plasma.nix
|
||
];
|
||
# Home Manager needs a bit of information about you and the
|
||
# paths it should manage.
|
||
home.username = "chris";
|
||
home.homeDirectory = "/home/chris";
|
||
|
||
# This value determines the Home Manager release that your
|
||
# configuration is compatible with. This helps avoid breakage
|
||
# when a new Home Manager release introduces backwards
|
||
# incompatible changes.
|
||
#
|
||
# You can update Home Manager without changing this value. See
|
||
# the Home Manager release notes for a list of state version
|
||
# changes in each release.
|
||
home.stateVersion = "21.11"; # Did you read the comment?
|
||
|
||
# Let Home Manager install and manage itself.
|
||
programs.home-manager.enable = true;
|
||
|
||
xdg = {
|
||
userDirs = {
|
||
enable = true;
|
||
desktop = "${config.home.homeDirectory}";
|
||
documents = "${config.home.homeDirectory}/docs";
|
||
download = "${config.home.homeDirectory}/dls";
|
||
music = "${config.home.homeDirectory}/music";
|
||
pictures = "${config.home.homeDirectory}/pics";
|
||
publicShare = "${config.home.homeDirectory}";
|
||
templates = "${config.home.homeDirectory}";
|
||
videos = "${config.home.homeDirectory}/vids";
|
||
};
|
||
portal = {
|
||
enable = true;
|
||
config = {
|
||
common = {
|
||
default = [ pkgs.kdePackages.xdg-desktop-portal-kde pkgs.xdg-desktop-portal-cosmic ];
|
||
"org.freedesktop.impl.portal.FileChooser" = [ "kde" ];
|
||
};
|
||
hyprland = {
|
||
default = [ "hyprland" ];
|
||
"org.freedesktop.impl.portal.FileChooser" = [ "kde" ];
|
||
};
|
||
};
|
||
extraPortals = [ pkgs.kdePackages.xdg-desktop-portal-kde pkgs.xdg-desktop-portal-cosmic ];
|
||
};
|
||
mimeApps = {
|
||
enable = true;
|
||
associations.added = {
|
||
"video/mp4" = "mpv.desktop";
|
||
"video/webm" = "mpv.desktop";
|
||
"video/mkv" = "mpv.desktop";
|
||
"video/x-matroska" = "mpv.desktop";
|
||
"video/quicktime" = "mpv.desktop";
|
||
"video/mpeg" = "mpv.desktop";
|
||
"video/ogg" = "mpv.desktop";
|
||
"video/VP9" = "mpv.desktop";
|
||
"video/VP8" = "mpv.desktop";
|
||
"video/AV1" = "mpv.desktop";
|
||
"video/H265" = "mpv.desktop";
|
||
"video/H264" = "mpv.desktop";
|
||
"video/vnd.youtube.yt" = "mpv.desktop";
|
||
"inode/directory" = "dolphin.desktop";
|
||
"image/gif" = "imv-rifle.desktop";
|
||
"image/jpeg" = "imv-rifle.desktop";
|
||
"image/heif" = "imv-rifle.desktop";
|
||
"image/png" = "imv-rifle.desktop";
|
||
"image/webp" = "imv-rifle.desktop";
|
||
"audio/vorbis" = "mpv-slow.desktop";
|
||
"audio/mp3" = "mpv-slow.desktop";
|
||
"audio/m4a" = "mpv-slow.desktop";
|
||
"audio/flac" = "mpv-slow.desktop";
|
||
"audio/wav" = "mpv-slow.desktop";
|
||
"audio/opus" = "mpv-slow.desktop";
|
||
"audio/x-opus" = "mpv-slow.desktop";
|
||
"audio/x-opus+ogg" = "mpv-slow.desktop";
|
||
"x-scheme-handler/http" = "librewolf.desktop";
|
||
"x-scheme-handler/https" = "librewolf.desktop";
|
||
"text/html" = "librewolf.desktop";
|
||
"text/org" = "emacsclient.desktop";
|
||
"text/md" = "emacsclient.desktop";
|
||
"text/txt" = "emacsclient.desktop";
|
||
"text/rs" = "emacsclient.desktop";
|
||
"text/plain" = "emacsclient.desktop";
|
||
"application/pdf" = "emacsclient.desktop";
|
||
"x-scheme-handler/about" = "librewolf.desktop";
|
||
"x-scheme-handler/unknown" = "librewolf.desktop";
|
||
"x-scheme-handler/magnet" = "torrent.desktop";
|
||
};
|
||
defaultApplications = {
|
||
"video/mp4" = "mpv.desktop";
|
||
"video/webm" = "mpv.desktop";
|
||
"video/mkv" = "mpv.desktop";
|
||
"video/x-matroska" = "mpv.desktop";
|
||
"video/quicktime" = "mpv.desktop";
|
||
"video/mpeg" = "mpv.desktop";
|
||
"video/ogg" = "mpv.desktop";
|
||
"video/VP9" = "mpv.desktop";
|
||
"video/VP8" = "mpv.desktop";
|
||
"video/AV1" = "mpv.desktop";
|
||
"video/H265" = "mpv.desktop";
|
||
"video/H264" = "mpv.desktop";
|
||
"video/vnd.youtube.yt" = "mpv.desktop";
|
||
"inode/directory" = "dolphin.desktop";
|
||
"image/gif" = "imv-rifle.desktop";
|
||
"image/jpeg" = "imv-rifle.desktop";
|
||
"image/heif" = "imv-rifle.desktop";
|
||
"image/png" = "imv-rifle.desktop";
|
||
"image/webp" = "imv-rifle.desktop";
|
||
"audio/vorbis" = "mpv-slow.desktop";
|
||
"audio/mp3" = "mpv-slow.desktop";
|
||
"audio/m4a" = "mpv-slow.desktop";
|
||
"audio/flac" = "mpv-slow.desktop";
|
||
"audio/wav" = "mpv-slow.desktop";
|
||
"audio/opus" = "mpv-slow.desktop";
|
||
"x-scheme-handler/http" = "librewolf.desktop";
|
||
"x-scheme-handler/https" = "librewolf.desktop";
|
||
"text/html" = "librewolf.desktop";
|
||
"text/org" = "emacsclient.desktop";
|
||
"text/md" = "emacsclient.desktop";
|
||
"text/txt" = "emacsclient.desktop";
|
||
"text/rs" = "emacsclient.desktop";
|
||
"text/plain" = "emacsclient.desktop";
|
||
"application/pdf" = "emacsclient.desktop";
|
||
"x-scheme-handler/about" = "librewolf.desktop";
|
||
"x-scheme-handler/unknown" = "librewolf.desktop";
|
||
"x-scheme-handler/magnet" = "torrent.desktop";
|
||
};
|
||
};
|
||
|
||
};
|
||
|
||
# home.file.".config/xdg-desktop-portal/portals.conf" = {
|
||
# text = ''
|
||
# [preferred]
|
||
# org.freedesktop.impl.portal.FileChooser=kde
|
||
# '';
|
||
# };
|
||
|
||
programs.gpg = { enable = true; };
|
||
|
||
services.gpg-agent = {
|
||
enable = true;
|
||
pinentryPackage = pkgs.pinentry-qt;
|
||
# extraConfig = ''
|
||
# pinentry-program ${pkgs.pinentry.qt}/bin/pinentry
|
||
# '';
|
||
};
|
||
|
||
qt = {
|
||
enable = true;
|
||
style.package = [
|
||
inputs.darkly.packages.${pkgs.system}.darkly-qt5
|
||
inputs.darkly.packages.${pkgs.system}.darkly-qt6
|
||
# pkgs.kdePackages.callPackage ../pkgs/darkly-pkg.nix { }
|
||
];
|
||
platformTheme.name = "qtct";
|
||
};
|
||
|
||
accounts.email = {
|
||
maildirBasePath = "mail";
|
||
accounts = {
|
||
personal = {
|
||
address = "chris@cochrun.xyz";
|
||
userName = "chris@cochrun.xyz";
|
||
mbsync.enable = true;
|
||
mu.enable = true;
|
||
flavor = "plain";
|
||
primary = true;
|
||
passwordCommand = "${pkgs.rbw}/bin/rbw get 'Office 365'";
|
||
realName = "Chris Cochrun";
|
||
signature = {
|
||
text = ''
|
||
Praising God in all things,
|
||
Chris Cochrun
|
||
'';
|
||
delimiter = ''
|
||
***
|
||
'';
|
||
showSignature = "append";
|
||
};
|
||
imap = {
|
||
host = "mail.cochrun.xyz";
|
||
port = 993;
|
||
tls = {
|
||
enable = true;
|
||
# certificatesFile = ./certs.txt;
|
||
};
|
||
};
|
||
smtp = {
|
||
host = "mail.cochrun.xyz";
|
||
port = 25;
|
||
tls = {
|
||
enable = true;
|
||
# certificatesFile = ./certs.txt;
|
||
};
|
||
};
|
||
mbsync = {
|
||
create = "maildir";
|
||
remove = "both";
|
||
expunge = "both";
|
||
};
|
||
maildir.path = "cochrun";
|
||
};
|
||
|
||
work = {
|
||
address = "chris@tfcconnection.org";
|
||
userName = "chris@tfcconnection.org";
|
||
mbsync.enable = true;
|
||
mu.enable = true;
|
||
flavor = "outlook.office365.com";
|
||
passwordCommand = "cat ~/.config/access";
|
||
realName = "Chris Cochrun";
|
||
imap = {
|
||
host = "outlook.office365.com";
|
||
port = 993;
|
||
tls.enable = true;
|
||
};
|
||
smtp = {
|
||
host = "smtp.office365.com";
|
||
port = 587;
|
||
tls.enable = true;
|
||
};
|
||
mbsync = {
|
||
create = "maildir";
|
||
remove = "both";
|
||
expunge = "both";
|
||
extraConfig.account = { AuthMechs = "XOAUTH2"; };
|
||
};
|
||
maildir.path = "office";
|
||
signature = {
|
||
text = ''
|
||
Praising God in all things,
|
||
Chris Cochrun
|
||
'';
|
||
delimiter = ''
|
||
***
|
||
'';
|
||
showSignature = "append";
|
||
};
|
||
};
|
||
};
|
||
};
|
||
|
||
programs.git = {
|
||
enable = true;
|
||
userName = "Chris Cochrun";
|
||
userEmail = "chris@cochrun.xyz";
|
||
};
|
||
|
||
home.packages = with pkgs; [ ];
|
||
|
||
programs.mu.enable = true;
|
||
|
||
programs.mbsync = {
|
||
package = pkgs.isync.override { withCyrusSaslXoauth2 = true; };
|
||
enable = true;
|
||
};
|
||
programs.msmtp.enable = true;
|
||
services.mbsync.enable = true;
|
||
|
||
programs.obs-studio = {
|
||
enable = true;
|
||
plugins = [ pkgs.obs-studio-plugins.obs-move-transition ];
|
||
};
|
||
|
||
# home.file.".config/mpv" = {
|
||
# source = ../.config/mpv;
|
||
# };
|
||
|
||
programs.mpv = {
|
||
enable = true;
|
||
scripts = with pkgs.mpvScripts; [
|
||
thumbfast
|
||
videoclip
|
||
mpris
|
||
quality-menu
|
||
modernx-zydezu
|
||
sponsorblock
|
||
];
|
||
config = {
|
||
osc = "no";
|
||
vo = "gpu";
|
||
af = "scaletempo2";
|
||
input-ipc-server = "/tmp/mpvsocket";
|
||
hwdec = "auto";
|
||
rtsp-transport = "udp";
|
||
speed = 1.95;
|
||
gpu-context = "wayland";
|
||
|
||
ytdl-format =
|
||
"bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best";
|
||
|
||
};
|
||
profiles = {
|
||
fast.speed = 1.95;
|
||
|
||
slow.speed = 1;
|
||
|
||
wc = {
|
||
speed = 1;
|
||
osd-level = 0;
|
||
load-scripts = "no";
|
||
profile = "low-latency";
|
||
demuxer-lavf-format = "video4linux2";
|
||
demuxer-lavf-o-set =
|
||
"input_format=mjpeg,video_size=1920x1080,framerate=60";
|
||
fps = 60;
|
||
};
|
||
};
|
||
scriptOpts = {
|
||
videoclip = {
|
||
video_folder_path = "/home/chris/vids";
|
||
audio_folder_path = "/home/chris/music";
|
||
};
|
||
};
|
||
};
|
||
|
||
# home.file.".config/ags" = {
|
||
# source = ../.config/ags;
|
||
# };
|
||
# services.kdeconnect.enable = true;
|
||
|
||
services = {
|
||
syncthing = {
|
||
enable = true;
|
||
# dataDir = "/home/chris";
|
||
# openDefaultPorts = true;
|
||
# configDir = "/home/chris/.config/syncthing";
|
||
# user = "chris";
|
||
# group = "users";
|
||
guiAddress = "0.0.0.0:8384";
|
||
overrideFolders = true;
|
||
overrideDevices = true;
|
||
tray.enable = true;
|
||
settings = {
|
||
devices = {
|
||
kaladin = {
|
||
id = (if laptop then
|
||
"PMB4FRV-2CAPFCQ-UFELVNI-YAQRRHE-MMMXQ4P-RXEXBZV-QEUL6QN-KZEW5AM"
|
||
else
|
||
"");
|
||
};
|
||
syl = {
|
||
id = (if laptop then
|
||
""
|
||
else
|
||
"FPELBL2-Y6BMDOB-4TXM75K-VZV7IR3-JDMM35Z-TUEZKXX-YAPUTL6-K5SFQAN");
|
||
};
|
||
shadow = {
|
||
id =
|
||
"B24VU6Z-URTMEXN-ZYKRWX7-XWSTHXD-XKX67EB-XSKMT4V-KWKGX7Q-W7DB2QV";
|
||
};
|
||
tablet = {
|
||
id =
|
||
"4HEXCNH-MCVBZQX-LQ735TG-P2VTJ7N-CZ5MK4P-ICZAPC7-YCXVEWV-7NILMA5";
|
||
};
|
||
kohlin = {
|
||
id =
|
||
"BSWKBRR-2IJBCHA-UQY7DE7-CV2U2IL-PMFQFCJ-D5ZZJMU-FPYRUPC-MCC32QQ";
|
||
};
|
||
dalinar = {
|
||
id =
|
||
"MPRMA33-XHW6SRE-D2EDBCP-TSMRNGI-ZCE2TAN-FE4BMKA-PSKGYJW-CRIEJQL";
|
||
};
|
||
};
|
||
folders = {
|
||
docs = {
|
||
path = "${config.home.homeDirectory}/docs";
|
||
devices =
|
||
[ (if laptop then "kaladin" else "syl") "shadow" "dalinar" ];
|
||
# versioning = {
|
||
# type = "staggered";
|
||
# fsPath = "~/.local/share/syncthing/backup";
|
||
# params = {
|
||
# cleanInterval = 3600;
|
||
# maxAge = 31536000;
|
||
# };
|
||
# };
|
||
};
|
||
music = {
|
||
id = "teqqy-rzvec";
|
||
path = "${config.home.homeDirectory}/music";
|
||
devices =
|
||
[ "dalinar" (if laptop then "kaladin" else "syl") "shadow" ];
|
||
};
|
||
};
|
||
};
|
||
};
|
||
easyeffects.enable = true;
|
||
nextcloud-client = {
|
||
enable = true;
|
||
startInBackground = true;
|
||
};
|
||
|
||
mpd.enable = true;
|
||
pueue.enable = true;
|
||
|
||
# For matrix clients that don't have e2ee
|
||
pantalaimon = {
|
||
enable = false;
|
||
settings = {
|
||
Default = {
|
||
LogLevel = "Debug";
|
||
SSL = true;
|
||
};
|
||
local-matrix = {
|
||
Homeserver = "https://matrix.tfcconnection.org";
|
||
ListenAddress = "127.0.0.1";
|
||
ListenPort = 8008;
|
||
# SSL = true;
|
||
# IgnoreVerification = true;
|
||
};
|
||
};
|
||
};
|
||
};
|
||
|
||
# stylix = {
|
||
# enable = true;
|
||
# polarity = "dark";
|
||
# base16Scheme = {
|
||
# base00 = "282a36";
|
||
# base01 = "34353e";
|
||
# base02 = "43454f";
|
||
# base03 = "78787e";
|
||
# base04 = "a5a5a9";
|
||
# base05 = "e2e4e5";
|
||
# base06 = "eff0eb";
|
||
# base07 = "f1f1f0";
|
||
# base08 = "ff5c57";
|
||
# base09 = "ff9f43";
|
||
# base0A = "f3f99d";
|
||
# base0B = "5af78e";
|
||
# base0C = "9aedfe";
|
||
# base0D = "57c7ff";
|
||
# base0E = "ff6ac1";
|
||
# base0F = "b2643c";
|
||
# };
|
||
# image = config.lib.stylix.pixel "base0D";
|
||
# # targets.tofi.enable = false;
|
||
# };
|
||
|
||
# programs.tofi.enable = true;
|
||
|
||
#services.espanso = {
|
||
# enable = true;
|
||
# settings = {
|
||
# toggle_key = "RIGHT_CTRL";
|
||
# matches = [
|
||
# { # dates
|
||
# trigger = ":date";
|
||
# replace = "{{mydate}}";
|
||
# vars = [{
|
||
|
||
# name = "mydate";
|
||
# type = "date";
|
||
# params = {format = "%m/%d/%Y";};
|
||
# }];
|
||
# }
|
||
# { # Shell commands
|
||
# trigger = ":shell";
|
||
# replace = "{{output}}";
|
||
# vars = [{
|
||
# name = "output";
|
||
# type = "shell";
|
||
# params = { cmd = "echo Hello from your shell";};
|
||
# }];
|
||
# }
|
||
# { # simple text
|
||
# trigger = ":gml";
|
||
# replace = "ccochrun21@gmail.com";
|
||
# }
|
||
# {
|
||
# trigger = ":otl";
|
||
# replace = "chris.cochrun@outlook.com";
|
||
# }
|
||
# {
|
||
# trigger = ":tfcml";
|
||
# replace = "chris@tfcconnection.org";
|
||
# }
|
||
# {
|
||
# trigger = ":name";
|
||
# replace = "Chris Cochrun";
|
||
# }
|
||
# {
|
||
# trigger = ":cn";
|
||
# replace = "A Giant Gummy Lizard";
|
||
# }
|
||
# ];
|
||
# };
|
||
#};
|
||
|
||
home.pointerCursor = {
|
||
gtk.enable = true;
|
||
package = pkgs.phinger-cursors;
|
||
name = "phinger-cursors-light";
|
||
size = 32;
|
||
};
|
||
|
||
dconf.settings = {
|
||
"org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; };
|
||
};
|
||
|
||
gtk = {
|
||
enable = true;
|
||
cursorTheme = {
|
||
name = "phinger-cursors-light";
|
||
package = pkgs.phinger-cursors;
|
||
size = 32;
|
||
};
|
||
font = {
|
||
name = "VictorMono Nerd Font";
|
||
size = 11;
|
||
};
|
||
iconTheme = {
|
||
name = "Papirus-Dark";
|
||
package = pkgs.papirus-icon-theme;
|
||
};
|
||
# theme.name = "Breeze";
|
||
gtk3.extraConfig = {
|
||
gtk-application-prefer-dark-theme = true;
|
||
gtk-button-images = true;
|
||
gtk-decoration-layout = "icon:minimize,maximize,close";
|
||
gtk-enable-animations = true;
|
||
gtk-enable-event-sounds = 1;
|
||
gtk-menu-images = true;
|
||
gtk-primary-button-warps-slider = true;
|
||
gtk-xft-antialias = 1;
|
||
gtk-xft-dpi = 98304;
|
||
gtk-xft-hinting = 1;
|
||
gtk-xft-hintstyle = "hintfull";
|
||
gtk-xft-rgba = "rgb";
|
||
};
|
||
};
|
||
|
||
services.cliphist = { enable = true; };
|
||
|
||
home.file.".config/bottom" = {
|
||
source = ../.config/bottom;
|
||
recursive = true;
|
||
};
|
||
|
||
home.file.".mozilla/firefox/nw77o6yc.default/chrome" = {
|
||
source = ../.config/firefox/chrome;
|
||
recursive = true;
|
||
};
|
||
|
||
home.file.".mozilla/firefox/nw77o6yc.default/user.js" = {
|
||
text = ''
|
||
// userchrome.css usercontent.css activate
|
||
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
|
||
|
||
// disable new sidebar
|
||
user_pref("sidebar.revamp", false);
|
||
|
||
// Fill SVG Color
|
||
user_pref("svg.context-properties.content.enabled", true);
|
||
|
||
// CSS's `:has()` selector
|
||
user_pref("layout.css.has-selector.enabled", true);
|
||
|
||
// Integrated calculator at urlbar
|
||
user_pref("browser.urlbar.suggest.calculator", true);
|
||
|
||
// Integrated unit convertor at urlbar
|
||
user_pref("browser.urlbar.unitConversion.enabled", true);
|
||
|
||
// Trim URL
|
||
user_pref("browser.urlbar.trimHttps", true);
|
||
user_pref("browser.urlbar.trimURLs", true);
|
||
|
||
// GTK rounded corners
|
||
user_pref("widget.gtk.rounded-bottom-corners.enabled", true);
|
||
|
||
// Who is bogus? (fixes Sidebery tab dragging on Linux)
|
||
user_pref("widget.gtk.ignore-bogus-leave-notify", 1);
|
||
'';
|
||
};
|
||
|
||
home.file.".librewolf/nw77o6yc.default/chrome" = {
|
||
source = ../.config/firefox/chrome;
|
||
recursive = true;
|
||
};
|
||
|
||
home.file.".librewolf/nw77o6yc.default/user.js" = {
|
||
text = ''
|
||
// userchrome.css usercontent.css activate
|
||
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
|
||
|
||
// disable new sidebar
|
||
user_pref("sidebar.revamp", false);
|
||
|
||
// Fill SVG Color
|
||
user_pref("svg.context-properties.content.enabled", true);
|
||
|
||
// CSS's `:has()` selector
|
||
user_pref("layout.css.has-selector.enabled", true);
|
||
|
||
// Integrated calculator at urlbar
|
||
user_pref("browser.urlbar.suggest.calculator", true);
|
||
|
||
// Integrated unit convertor at urlbar
|
||
user_pref("browser.urlbar.unitConversion.enabled", true);
|
||
|
||
// Trim URL
|
||
user_pref("browser.urlbar.trimHttps", true);
|
||
user_pref("browser.urlbar.trimURLs", true);
|
||
|
||
// GTK rounded corners
|
||
user_pref("widget.gtk.rounded-bottom-corners.enabled", true);
|
||
|
||
// Who is bogus? (fixes Sidebery tab dragging on Linux)
|
||
user_pref("widget.gtk.ignore-bogus-leave-notify", 1);
|
||
'';
|
||
};
|
||
|
||
home.file.".config/tridactyl" = {
|
||
source = ../.config/tridactyl;
|
||
recursive = true;
|
||
};
|
||
|
||
programs.librewolf = {
|
||
enable = true;
|
||
package = pkgs.librewolf-wayland.override {
|
||
nativeMessagingHosts =
|
||
[ pkgs.kdePackages.plasma-browser-integration pkgs.tridactyl-native ];
|
||
};
|
||
profiles.chris = {
|
||
name = "default";
|
||
path = "nw77o6yc.default";
|
||
isDefault = true;
|
||
};
|
||
};
|
||
|
||
# programs.eww = {
|
||
# enable = true;
|
||
# configDir = ../.config/eww;
|
||
# };
|
||
|
||
programs.waybar = {
|
||
enable = true;
|
||
settings = {
|
||
mainBar = {
|
||
layer = "top";
|
||
output = [ "DP-1" "eDP-1" ];
|
||
position = if laptop then "bottom" else "top";
|
||
height = 35;
|
||
width = if laptop then 1300 else 2100;
|
||
# Choose the order of the modules "custom/wintitle",
|
||
modules-left = [ "hyprland/workspaces" "hyprland/window" ];
|
||
modules-center = [ "clock" ];
|
||
modules-right =
|
||
[ "pulseaudio" "backlight" "disk" "memory" "cpu" "battery" "tray" ];
|
||
margin-top = if laptop then -5 else 5;
|
||
margin-bottom = if laptop then 8 else 0;
|
||
margin-left = 6;
|
||
margin-right = 6;
|
||
"hyprland/window" = { format = " <span style='italic'>{}</span>"; };
|
||
workspaces = { format = " {name} "; };
|
||
"hyprland/workspaces" = {
|
||
format = "{icon}";
|
||
format-icons = {
|
||
"1" = "";
|
||
"2" = "";
|
||
"3" = "";
|
||
"4" = "";
|
||
"5" = "";
|
||
"6" = "";
|
||
"7" = "";
|
||
"8" = "";
|
||
"9" = "";
|
||
};
|
||
all-outputs = true;
|
||
# on-scroll-up = "hyprctl dispatch workspace e+1";
|
||
# on-scroll-down = "hyprctl dispatch workspace e-1";
|
||
};
|
||
tray = {
|
||
icon-size = 21;
|
||
spacing = 10;
|
||
};
|
||
clock = {
|
||
tooltip-format = ''
|
||
<big>{:%Y %B}</big>
|
||
<tt><small>{calendar}</small></tt>'';
|
||
format-alt = "{:%Y-%m-%d}";
|
||
format = "{:%a %b %e, %I:%M %p}";
|
||
};
|
||
cpu = { format = " {usage}%"; };
|
||
memory = { format = " {}%"; };
|
||
temperature = {
|
||
# "thermal-zone": 2,
|
||
# "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
|
||
critical-threshold = 80;
|
||
# "format-critical": "{temperatureC}°C {icon}",
|
||
format = "{icon} {temperatureC}°C";
|
||
format-icons = [ "" "" "" ];
|
||
};
|
||
backlight = {
|
||
# "device": "acpi_video1",
|
||
format = "{icon} {PERCENT}%";
|
||
format-icons = [ "" "" ];
|
||
};
|
||
disk = {
|
||
format = " {percentage_used}%";
|
||
tooltip-format = "{used} out of {total} with {free} left";
|
||
};
|
||
battery = {
|
||
states = {
|
||
good = 95;
|
||
warning = 30;
|
||
critical = 15;
|
||
};
|
||
format = "{icon} {capacity}%";
|
||
format-charging = "{icon} {capacity}%";
|
||
format-plugged = " {capacity}%";
|
||
format-alt = "{time} {icon}";
|
||
format-good = "{icon} {capacity}%";
|
||
format-full = " {capacity}%";
|
||
format-icons = [ "" "" "" "" "" ];
|
||
format-charging-icons = [ "" "" "" "" "" ];
|
||
};
|
||
network = {
|
||
# "interface": "wlp2*", // (Optional) To force the use of this interface
|
||
format-wifi = " ({signalStrength}%)";
|
||
format-ethernet = " {ipaddr}";
|
||
format-linked = "{ifname} (No IP)";
|
||
format-disconnected = "Disconnected ";
|
||
format-alt = "{ifname}: {essid} {ipaddr}/{cidr}";
|
||
};
|
||
pulseaudio = {
|
||
scroll-step = 1;
|
||
format = "{icon} {volume}%";
|
||
format-muted = " muted";
|
||
format-source = "";
|
||
format-source-muted = "";
|
||
format-icons = {
|
||
headphone = [ "" "" "" ];
|
||
phone = "";
|
||
portable = "";
|
||
car = "";
|
||
default = [ "" "" "" ];
|
||
};
|
||
on-click = "alacritty --class pulsemixer -e pulsemixer";
|
||
ignored-sinks = [ "Easy Effects Sink" ];
|
||
};
|
||
};
|
||
};
|
||
style = ''
|
||
@define-color base00 #282a36;
|
||
@define-color base01 #34353e;
|
||
@define-color base02 #43454f;
|
||
@define-color base03 #78787e;
|
||
@define-color base04 #a5a5a9;
|
||
@define-color base05 #e2e4e5;
|
||
@define-color base06 #eff0eb;
|
||
@define-color base07 #f1f1f0;
|
||
@define-color base08 #ff5c57;
|
||
@define-color base09 #ff9f43;
|
||
@define-color base0A #f3f99d;
|
||
@define-color base0B #5af78e;
|
||
@define-color base0C #9aedfe;
|
||
@define-color base0D #57c7ff;
|
||
@define-color base0E #ff6ac1;
|
||
@define-color base0F #b2643c;
|
||
@define-color basetransparent rgba(40, 42, 54, 0.0);
|
||
@define-color backtransparent rgba(40, 42, 54, 0.7);
|
||
* {
|
||
border: 1px;
|
||
border-radius: 20px;
|
||
font-family: VictorMono Nerd Font;
|
||
font-size: 15px;
|
||
font-weight: normal;
|
||
box-shadow: none;
|
||
text-shadow: none;
|
||
transition-duration: 0s;
|
||
padding-top: 0px;
|
||
padding-bottom: 0px;
|
||
}
|
||
|
||
|
||
window {
|
||
background: transparent;
|
||
/* border-radius: 20px; */
|
||
}
|
||
|
||
window#waybar > box {
|
||
padding-top: 5px;
|
||
padding-bottom: 3px;
|
||
padding-left: 3px;
|
||
padding-right: 10px;
|
||
color: @base05;
|
||
box-shadow: 5px 5px 4px 4px #202020;
|
||
margin: 12px 14px 14px 14px;
|
||
background: @backtransparent;
|
||
}
|
||
|
||
tooltip {
|
||
background: @base00;
|
||
border: 1px solid @base0D;
|
||
}
|
||
|
||
tooltip label {
|
||
padding: 10px;
|
||
}
|
||
|
||
#workspaces {
|
||
border-radius: 20px;
|
||
margin-left: 10px;
|
||
padding-right: 10px;
|
||
background: transparent;
|
||
transition: none;
|
||
color: @base0C;
|
||
}
|
||
|
||
#tags {
|
||
border-radius: 20px;
|
||
margin-left: 6px;
|
||
padding-right: 10px;
|
||
background: transparent;
|
||
transition: none;
|
||
}
|
||
|
||
#workspaces button {
|
||
padding: 0 0.7em;
|
||
transition: none;
|
||
color: rgba(217, 216, 216, 0.4);
|
||
background: transparent;
|
||
}
|
||
|
||
#tags button {
|
||
transition: none;
|
||
color: rgba(217, 216, 216, 0.4);
|
||
background: transparent;
|
||
}
|
||
|
||
#workspaces button.visible {
|
||
color: @base0C;
|
||
}
|
||
|
||
#tags button.occupied {
|
||
color: rgba(217, 216, 216, 1);
|
||
}
|
||
|
||
#workspaces button.focused {
|
||
color: @base09;
|
||
}
|
||
|
||
#tags button.focused {
|
||
color: @base0C;
|
||
}
|
||
|
||
#workspaces button:hover {
|
||
transition: none;
|
||
box-shadow: inherit;
|
||
text-shadow: inherit;
|
||
color: @base0E;
|
||
}
|
||
|
||
#workspaces button.urgent {
|
||
color: @base08;
|
||
}
|
||
|
||
#mode, #battery, #cpu, #memory, #network, #pulseaudio, #idle_inhibitor, #backlight, #custom-storage, #disk, #custom-weather, #custom-mail {
|
||
margin: 0px 3px 0px 3px;
|
||
/* min-width: 25px; */
|
||
}
|
||
|
||
#clock {
|
||
margin-left: 2px;
|
||
margin-right: 2px;
|
||
padding-left: 10px;
|
||
padding-right: 10px;
|
||
border-radius: 20px;
|
||
transition: none;
|
||
color: @base0B;
|
||
background: transparent;
|
||
}
|
||
|
||
#backlight {
|
||
margin-left: 2px;
|
||
margin-right: 2px;
|
||
padding-left: 5px;
|
||
padding-right: 5px;
|
||
border-radius: 20px;
|
||
transition: none;
|
||
color: @base08;
|
||
background: transparent;
|
||
}
|
||
|
||
#battery.warning {
|
||
color: @base09;
|
||
}
|
||
|
||
#battery.critical {
|
||
color: @base08;
|
||
}
|
||
|
||
#battery.charging {
|
||
color: @base0B;
|
||
}
|
||
|
||
#pulseaudio {
|
||
padding-left: 5px;
|
||
padding-right: 5px;
|
||
border-radius: 20px;
|
||
transition: none;
|
||
color: @base09;
|
||
background: transparent;
|
||
}
|
||
|
||
#network {
|
||
padding-left: 5px;
|
||
padding-right: 5px;
|
||
border-radius: 20px;
|
||
transition: none;
|
||
color: @base0B;
|
||
background: transparent;
|
||
}
|
||
|
||
#cpu {
|
||
padding-left: 5px;
|
||
padding-right: 5px;
|
||
border-radius: 20px;
|
||
transition: none;
|
||
color: @base09;
|
||
background: transparent;
|
||
}
|
||
|
||
#battery {
|
||
padding-left: 5px;
|
||
padding-right: 5px;
|
||
border-radius: 20px;
|
||
transition: none;
|
||
color: @base0D;
|
||
background: transparent;
|
||
}
|
||
|
||
#battery.bat2 {
|
||
margin-right: 10px;
|
||
}
|
||
|
||
#memory {
|
||
padding-left: 5px;
|
||
padding-right: 5px;
|
||
border-radius: 20px;
|
||
transition: none;
|
||
color: @base0C;
|
||
background: transparent;
|
||
}
|
||
|
||
#disk {
|
||
padding-left: 5px;
|
||
padding-right: 5px;
|
||
border-radius: 20px;
|
||
transition: none;
|
||
color: @base0E;
|
||
background: transparent;
|
||
}
|
||
|
||
#tray {
|
||
padding-left: 15px;
|
||
padding-right: 5px;
|
||
border-radius: 20px;
|
||
transition: none;
|
||
color: @base0E;
|
||
background: transparent;
|
||
}
|
||
|
||
'';
|
||
};
|
||
|
||
programs.rbw.enable = true;
|
||
home.file.".config/rbw" = {
|
||
source = ../.config/rbw;
|
||
recursive = true;
|
||
};
|
||
|
||
# home.file.".config/fish/config.fish" = {
|
||
# source = ../.config/fish/config.fish;
|
||
# };
|
||
|
||
home.file.".config/fish/functions" = { source = ../.config/fish/functions; };
|
||
|
||
# programs.ags = {
|
||
# enable = true;
|
||
# extraPackages = with pkgs; [
|
||
# gtksourceview
|
||
# webkitgtk
|
||
# accountsservice
|
||
# ];
|
||
# };
|
||
|
||
programs.fish = {
|
||
enable = true;
|
||
interactiveShellInit = ''
|
||
function fish_greeting -d "what's up, fish?"
|
||
# set_color $fish_color_autosuggestion[1]
|
||
# uname -npsr
|
||
# uptime
|
||
# set_color normal
|
||
end
|
||
|
||
function fish_title
|
||
if [ "$theme_display_virtualenv" = 'no' -o -z "$VIRTUAL_ENV" ]
|
||
printf '(%s) %s' $_ (prompt_pwd)
|
||
else
|
||
printf '(%s) %s' (basename "$VIRTUAL_ENV") (prompt_pwd)
|
||
end
|
||
end
|
||
|
||
function _prompt_whoami -a sep_color -a color -d "Display user@host if on a SSH session"
|
||
if set -q SSH_TTY
|
||
echo -n -s $color (whoami)@(hostnamectl --static) $sep_color '|'
|
||
end
|
||
end
|
||
|
||
function _git_branch_name
|
||
echo (command git symbolic-ref HEAD 2> /dev/null | sed -e 's|^refs/heads/||')
|
||
end
|
||
|
||
function _is_git_dirty
|
||
echo (command git status -s --ignore-submodules=dirty 2> /dev/null)
|
||
end
|
||
|
||
function _git_ahead_count -a remote -a branch_name
|
||
echo (command git log $remote/$branch_name..HEAD 2> /dev/null | \
|
||
grep '^commit' | wc -l | tr -d ' ')
|
||
end
|
||
|
||
function _git_dirty_remotes -a remote_color -a ahead_color
|
||
set current_branch (command git rev-parse --abbrev-ref HEAD 2> /dev/null)
|
||
set current_ref (command git rev-parse HEAD 2> /dev/null)
|
||
|
||
for remote in (git remote | grep 'origin\|upstream')
|
||
|
||
set -l git_ahead_count (_git_ahead_count $remote $current_branch)
|
||
|
||
set remote_branch "refs/remotes/$remote/$current_branch"
|
||
set remote_ref (git for-each-ref --format='%(objectname)' $remote_branch)
|
||
if test "$remote_ref" != \'\'
|
||
if test "$remote_ref" != $current_ref
|
||
if [ $git_ahead_count != 0 ]
|
||
echo -n "$remote_color!"
|
||
echo -n "$ahead_color+$git_ahead_count$normal"
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function _prompt_git -a gray normal orange red yellow
|
||
test "$theme_display_git" = no; and return
|
||
set -l git_branch (_git_branch_name)
|
||
test -z $git_branch; and return
|
||
if test "$theme_display_git_dirty" = no
|
||
echo -n -s $gray '‹' $yellow $git_branch $gray '› '
|
||
return
|
||
end
|
||
set dirty_remotes (_git_dirty_remotes $red $orange)
|
||
if [ (_is_git_dirty) ]
|
||
echo -n -s $gray '‹' $yellow $git_branch $red '*' $dirty_remotes $gray '› '
|
||
else
|
||
echo -n -s $gray '‹' $yellow $git_branch $red $dirty_remotes $gray '› '
|
||
end
|
||
end
|
||
|
||
function _prompt_pwd
|
||
set_color -o cyan
|
||
printf '%s' (prompt_pwd)
|
||
end
|
||
|
||
function _prompt_status_arrows -a exit_code
|
||
if test $exit_code -ne 0
|
||
set arrow_colors green
|
||
else
|
||
set arrow_colors green
|
||
end
|
||
|
||
for arrow_color in $arrow_colors
|
||
set_color $arrow_color
|
||
printf '»'
|
||
end
|
||
end
|
||
|
||
function fish_prompt
|
||
set -l exit_code $status
|
||
|
||
set -l gray (set_color 666)
|
||
set -l blue (set_color blue)
|
||
set -l red (set_color red)
|
||
set -l normal (set_color normal)
|
||
set -l yellow (set_color yellow)
|
||
set -l orange (set_color ff9900)
|
||
set -l green (set_color green)
|
||
|
||
printf $gray'['
|
||
|
||
_prompt_whoami $gray $green
|
||
|
||
if test "$theme_display_pwd_on_second_line" != yes
|
||
_prompt_pwd
|
||
printf '%s' $gray
|
||
end
|
||
|
||
printf '%s] ⚡️ %0.3fs' $gray (math $CMD_DURATION / 1000)
|
||
|
||
if set -q SCORPHISH_GIT_INFO_ON_FIRST_LINE
|
||
set theme_display_git_on_first_line
|
||
end
|
||
|
||
if set -q theme_display_git_on_first_line
|
||
_prompt_git $gray $normal $orange $red $yellow
|
||
end
|
||
|
||
if test "$theme_display_pwd_on_second_line" = yes
|
||
printf $gray'\n‹'
|
||
_prompt_pwd
|
||
printf $gray'›'
|
||
end
|
||
|
||
printf '\n'
|
||
if not set -q theme_display_git_on_first_line
|
||
_prompt_git $gray $normal $orange $red $yellow
|
||
end
|
||
_prompt_status_arrows $exit_code
|
||
printf ' '
|
||
|
||
set_color normal
|
||
end
|
||
|
||
function fish_right_prompt
|
||
set -l exit_code $status
|
||
if test $exit_code -ne 0
|
||
set_color red
|
||
else
|
||
set_color green
|
||
end
|
||
printf '%d' $exit_code
|
||
set_color -o 666
|
||
echo '|'
|
||
set_color -o 777
|
||
printf '%s' (date +%H:%M:%S)
|
||
set_color normal
|
||
end
|
||
|
||
### VI MODES
|
||
# Emulates vim's cursor shape behavior
|
||
# Set the normal and visual mode cursors to a block
|
||
set fish_cursor_default block
|
||
# Set the insert mode cursor to a line
|
||
set fish_cursor_insert line
|
||
# Set the replace mode cursor to an underscore
|
||
set fish_cursor_replace_one underscore
|
||
# The following variable can be used to configure cursor shape in
|
||
# visual mode, but due to fish_cursor_default, is redundant here
|
||
set fish_cursor_visual block
|
||
|
||
### BANG BANG FUNCTIONS
|
||
function __history_previous_command
|
||
switch (commandline -t)
|
||
case "!"
|
||
commandline -t $history[1]
|
||
commandline -f repaint
|
||
case "*"
|
||
commandline -i !
|
||
end
|
||
end
|
||
|
||
function __history_previous_command_arguments
|
||
switch (commandline -t)
|
||
case "!"
|
||
commandline -t ""
|
||
commandline -f history-token-search-backward
|
||
case "*"
|
||
commandline -i '$'
|
||
end
|
||
end
|
||
|
||
### bindings
|
||
function fish_user_key_bindings
|
||
fish_vi_key_bindings
|
||
bind -M insert ! __history_previous_command
|
||
bind -M insert '$' __history_previous_command_arguments
|
||
end
|
||
|
||
${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
|
||
|
||
starship init fish | source
|
||
'';
|
||
|
||
};
|
||
|
||
programs.nushell = {
|
||
enable = true;
|
||
shellAliases = {
|
||
# ls = "eza -l";
|
||
# la = "ls -la";
|
||
mpf = "mpv --profile=fast";
|
||
mps = "mpv --profile=slow";
|
||
ec = "emacsclient -t";
|
||
ecc = "emacsclient -c";
|
||
# mkdir = "mkdir -p";
|
||
nupd = "update-nix";
|
||
nupg = "upgrade-nix";
|
||
suspend = "systemctl suspend";
|
||
sysuse = "systemctl --user";
|
||
myip = "curl icanhazip.com";
|
||
nixs = "nix search nixpkgs";
|
||
# ytd = "yt-dlp -o '~/Videos/%(title)s.%(ext)s'";
|
||
};
|
||
configFile = {
|
||
text = ''
|
||
let fish_completer = {|spans|
|
||
fish --command $'complete "--do-complete=($spans | str join " ")"'
|
||
| $"value(char tab)description(char newline)" + $in
|
||
| from tsv --flexible --no-infer
|
||
}
|
||
|
||
$env.config = {
|
||
show_banner: false
|
||
}
|
||
|
||
# def start_zellij [] {
|
||
# if 'ZELLIJ' not-in ($env | columns) {
|
||
# if 'ZELLIJ_AUTO_ATTACH' in ($env | columns) and $env.ZELLIJ_AUTO_ATTACH == 'true' {
|
||
# zellij attach -c
|
||
# } else {
|
||
# zellij
|
||
# }
|
||
|
||
# if 'ZELLIJ_AUTO_EXIT' in ($env | columns) and $env.ZELLIJ_AUTO_EXIT == 'true' {
|
||
# exit
|
||
# }
|
||
# }
|
||
# }
|
||
|
||
# start_zellij
|
||
'';
|
||
};
|
||
environmentVariables = { EDITOR = ''"emacsclient -t"''; };
|
||
};
|
||
|
||
# home.file.".config/dunst" = {
|
||
# source = ../.config/dunst;
|
||
# };
|
||
|
||
services.dunst = {
|
||
enable = true;
|
||
iconTheme = {
|
||
package = pkgs.papirus-icon-theme;
|
||
name = "Papirus-Dark";
|
||
size = "16x16";
|
||
};
|
||
settings = {
|
||
global = {
|
||
monitor = 2;
|
||
follow = "none";
|
||
width = "(0, 300)";
|
||
height = "(0, 500)";
|
||
offset = "20x50";
|
||
origin = if laptop then "bottom-right" else "top-right";
|
||
notification_limit = 0;
|
||
progress_bar = true;
|
||
progress_bar_height = 10;
|
||
progress_bar_frame_width = 1;
|
||
progress_bar_min_width = 150;
|
||
progress_bar_max_width = 300;
|
||
transparency = 10;
|
||
separator_height = 2;
|
||
padding = 10;
|
||
horizontal_padding = 8;
|
||
text_icon_padding = 8;
|
||
frame_width = 0;
|
||
frame_color = "#aaaaaa";
|
||
gap_size = 8;
|
||
separator_color = "frame";
|
||
sort = "yes";
|
||
font = "VictorMono Nerd Font 10";
|
||
markup = "full";
|
||
format = ''
|
||
<b>%s</b>
|
||
%b'';
|
||
alignment = "center";
|
||
vertical_alignment = "center";
|
||
corner_radius = 18;
|
||
dmenu = "${pkgs.rofi}/bin/rofi -dmenu -p dunst:";
|
||
};
|
||
urgency_low = {
|
||
background = "#282a36";
|
||
foreground = "#57c7ff";
|
||
timeout = 10;
|
||
};
|
||
|
||
urgency_normal = {
|
||
background = "#282a36";
|
||
foreground = "#5af78e";
|
||
timeout = 10;
|
||
};
|
||
|
||
urgency_critical = {
|
||
background = "#282a36";
|
||
foreground = "#ff5c57";
|
||
frame_color = "#ff0000";
|
||
timeout = 0;
|
||
};
|
||
};
|
||
};
|
||
|
||
programs.atuin = {
|
||
enable = true;
|
||
enableNushellIntegration = true;
|
||
};
|
||
|
||
programs.direnv = {
|
||
enable = true;
|
||
nix-direnv.enable = true;
|
||
enableNushellIntegration = true;
|
||
};
|
||
|
||
programs.carapace = {
|
||
enable = true;
|
||
enableNushellIntegration = true;
|
||
};
|
||
|
||
# programs.qutebrowser.enable = true;
|
||
home.file.".config/qutebrowser/config.py" = {
|
||
source = ../.config/qutebrowser/config.py;
|
||
};
|
||
|
||
home.file.".config/qutebrowser/css" = {
|
||
source = ../.config/qutebrowser/css;
|
||
};
|
||
|
||
home.file.".local/share/qutebrowser/greasemonkey" = {
|
||
source = ../.config/qutebrowser/greasemonkey;
|
||
};
|
||
|
||
home.file.".config/imv" = {
|
||
source = ../.config/imv;
|
||
recursive = true;
|
||
};
|
||
|
||
home.file.".config/macchina" = {
|
||
source = ../.config/macchina;
|
||
recursive = true;
|
||
};
|
||
|
||
#home.file.".config/awesome" = {
|
||
# source = ../awesome;
|
||
# recursive = true;
|
||
#};
|
||
|
||
home.file.".config/awesome/bling" = {
|
||
source = ../.config/awesome/bling;
|
||
recursive = true;
|
||
};
|
||
|
||
home.file.".config/awesome/rubato" = {
|
||
source = ../.config/awesome/rubato;
|
||
recursive = true;
|
||
};
|
||
|
||
# home.file.".config/alacritty" = {
|
||
# source = ../.config/alacritty;
|
||
# };
|
||
|
||
home.file.".config/picom.conf" = { source = ../.config/picom.conf; };
|
||
|
||
# home.file.".config/networkmanager-dmenu/config.ini" = {
|
||
# source = ../networkmanager-dmenu/config.ini;
|
||
# };
|
||
|
||
home.file."bin" = {
|
||
source = ../scripts;
|
||
recursive = false;
|
||
};
|
||
|
||
home.shellAliases = {
|
||
# ls = "eza -l";
|
||
# la = "eza -la";
|
||
mpf = "mpv --profile=fast";
|
||
mps = "mpv --profile=slow";
|
||
ec = "emacsclient -t";
|
||
ecc = "emacsclient -c";
|
||
# mkdir = "mkdir -pv";
|
||
nupd = "update-nix";
|
||
nupg = "upgrade-nix";
|
||
suspend = "systemctl suspend";
|
||
sysuse = "systemctl --user";
|
||
myip = "curl icanhazip.com";
|
||
nixs = "nix search nixpkgs";
|
||
# ytd = ''yt-dlp -o "~/vids/%(title)s.%(ext)s" $1'';
|
||
};
|
||
|
||
programs.alacritty = {
|
||
enable = true;
|
||
settings = {
|
||
window = {
|
||
opacity = 1.0;
|
||
dynamic_title = true;
|
||
padding.x = 10;
|
||
padding.y = 10;
|
||
dynamic_padding = true;
|
||
};
|
||
terminal.shell.program = "zellij";
|
||
font = {
|
||
normal = {
|
||
family = "VictorMono Nerd Font";
|
||
style = "Regular";
|
||
};
|
||
bold = {
|
||
family = "VictorMono Nerd Font";
|
||
style = "Bold";
|
||
};
|
||
italic = {
|
||
family = "VictorMono Nerd Font";
|
||
style = "Italic";
|
||
};
|
||
size = 12.0;
|
||
};
|
||
colors = {
|
||
transparent_background_colors = true;
|
||
draw_bold_text_with_bright_colors = true;
|
||
primary = {
|
||
background = "#282a36";
|
||
foreground = "#eff0eb";
|
||
};
|
||
cursor.cursor = "#97979b";
|
||
selection = {
|
||
text = "#282a36";
|
||
background = "#feffff";
|
||
};
|
||
normal = {
|
||
black = "#282a36";
|
||
red = "#ff5c57";
|
||
green = "#5af78e";
|
||
yellow = "#f3f99d";
|
||
blue = "#57c7ff";
|
||
magenta = "#ff6ac1";
|
||
cyan = "#9aedfe";
|
||
white = "#f1f1f0";
|
||
};
|
||
bright = {
|
||
black = "#686868";
|
||
red = "#ff5c57";
|
||
green = "#5af78e";
|
||
yellow = "#f3f99d";
|
||
blue = "#57c7ff";
|
||
magenta = "#ff6ac1";
|
||
cyan = "#9aedfe";
|
||
white = "#eff0eb";
|
||
};
|
||
};
|
||
};
|
||
};
|
||
|
||
programs.starship = {
|
||
enable = true;
|
||
enableNushellIntegration = true;
|
||
enableBashIntegration = true;
|
||
enableFishIntegration = true;
|
||
settings = {
|
||
format = ''
|
||
[\[](fg:#78787e) $username$hostname$directory[\]](fg:#78787e) [$cmd_duration$time$status](italic fg:#78787e)
|
||
$character
|
||
'';
|
||
right_format = ''
|
||
$git_branch$git_status$rust$nix_shell
|
||
'';
|
||
cmd_duration = {
|
||
format = " $duration";
|
||
min_time = 0;
|
||
show_notifications = true;
|
||
min_time_to_notify = 20000;
|
||
};
|
||
time = { format = "| $time"; };
|
||
status = { format = "| $status"; };
|
||
scan_timeout = 10;
|
||
rust = { format = "[$symbol($version )]($style)"; };
|
||
cmake = {
|
||
format = "";
|
||
disabled = true;
|
||
};
|
||
nix_shell = {
|
||
format = "[$symbol$state( ($name))]($style) ";
|
||
impure_msg = " ";
|
||
pure_msg = " ";
|
||
};
|
||
hostname = { format = "@[$ssh_symbol$hostname]($style) > '"; };
|
||
git_branch = { format = "[$symbol$branch(:$remote_branch)]($style) "; };
|
||
git_status = {
|
||
format = "[\\[$all_status$ahead_behind\\]]($style) |(dimmed gray) ";
|
||
};
|
||
character = {
|
||
success_symbol = "[](bold green)";
|
||
error_symbol = "[x](bold red)";
|
||
};
|
||
};
|
||
};
|
||
|
||
programs.bash = {
|
||
enable = true;
|
||
bashrcExtra = ''
|
||
# export ENV_EFI_CODE_SECURE=/run/libvirt/nix-ovmf/OVMF_CODE.fd ENV_EFI_VARS_SECURE=/run/libvirt/nix-ovmf/OVMF_VARS.fd
|
||
case "$-" in
|
||
*i*)
|
||
eval "$(starship init bash)"
|
||
macchina;;
|
||
esac
|
||
# export LESS_TERMCAP_mb=$'\e[1;32m'
|
||
# export LESS_TERMCAP_md=$'\e[1;32m'
|
||
# export LESS_TERMCAP_me=$'\e[0m'
|
||
# export LESS_TERMCAP_se=$'\e[0m'
|
||
# export LESS_TERMCAP_so=$'\e[01;33m'
|
||
# export LESS_TERMCAP_ue=$'\e[0m'
|
||
# export LESS_TERMCAP_us=$'\e[1;4;31m'
|
||
'';
|
||
};
|
||
|
||
programs.zsh = {
|
||
enable = true;
|
||
autosuggestion.enable = true;
|
||
enableCompletion = true;
|
||
syntaxHighlighting.enable = true;
|
||
autocd = true;
|
||
dotDir = ".config/zsh";
|
||
shellAliases = {
|
||
ls = "eza -l";
|
||
la = "eza -la";
|
||
mpf = "mpv --profile=fast";
|
||
mps = "mpv --profile=slow";
|
||
ec = "emacsclient -t";
|
||
ecc = "emacsclient -c";
|
||
mkdir = "mkdir -pv";
|
||
nupd = "update-nix";
|
||
nupg = "upgrade-nix";
|
||
suspend = "systemctl suspend";
|
||
sysuse = "systemctl --user";
|
||
myip = "curl icanhazip.com";
|
||
ytd = ''yt-dlp -o "~/vids/%(title)s.%(ext)s" $1'';
|
||
};
|
||
initExtra = ''
|
||
macchina
|
||
'';
|
||
};
|
||
|
||
xdg.desktopEntries = {
|
||
mpv-slow = {
|
||
name = "MPV";
|
||
genericName = "Play from MPV but at normal speed";
|
||
exec = "alacritty -e mpv --profile=slow %U";
|
||
terminal = true;
|
||
categories = [ "Application" ];
|
||
mimeType = [
|
||
"audio/ogg"
|
||
"audio/mpeg"
|
||
"audio/opus"
|
||
"audio/x-opus+ogg"
|
||
"audio/x-wav"
|
||
];
|
||
};
|
||
imv-rifle = {
|
||
name = "IMV";
|
||
genericName = "Show images in current directory in IMV";
|
||
exec = "/home/chris/bin/rifle-imv %U";
|
||
terminal = false;
|
||
categories = [ "Application" ];
|
||
mimeType = [ "image/gif" "image/jpeg" "image/png" "image/heif" ];
|
||
};
|
||
};
|
||
|
||
systemd.user.services = {
|
||
ydotoold = {
|
||
Unit = {
|
||
Description = "An auto-input utility for wayland";
|
||
Documentation = [ "man:ydotool(1)" "man:ydotoold(8)" ];
|
||
};
|
||
|
||
Service = {
|
||
ExecStart =
|
||
"/run/current-system/sw/bin/ydotoold --socket-path /tmp/ydotools";
|
||
};
|
||
|
||
Install = { WantedBy = [ "default.target" ]; };
|
||
};
|
||
|
||
jellyfin-mpv-shim = {
|
||
Unit = {
|
||
Description = "Play Jellyfin media in mpv";
|
||
After = "graphical-session-pre.target";
|
||
};
|
||
|
||
Service = { ExecStart = "/run/current-system/sw/bin/jellyfin-mpv-shim"; };
|
||
|
||
Install = { WantedBy = [ "graphical-session.target" ]; };
|
||
};
|
||
|
||
# nextcloud-client = {
|
||
# Unit = {
|
||
# Description = "Nextcloud Client";
|
||
# After = [ "graphical-session.target" ];
|
||
# # PartOf = [ "plasma-workspace.target" ];
|
||
# };
|
||
# Service = {
|
||
# Environment = ["PATH=/etc/profiles/per-user/chris/bin"
|
||
# "WAYLAND_DISPLAY=wayland-1"];
|
||
# };
|
||
# };
|
||
};
|
||
|
||
}
|