nix/home/all.nix
2025-12-14 00:38:59 -05:00

273 lines
7.1 KiB
Nix
Executable file

{
config,
pkgs,
lib,
...
}:
{
options = {
catppuccinUpper = {
accent = lib.mkOption {
type = lib.types.str;
readOnly = true;
default =
builtins.substring 0 1 (lib.toUpper config.catppuccin.accent)
+ builtins.substring 1 (-1) config.catppuccin.accent;
};
flavor = lib.mkOption {
type = lib.types.str;
readOnly = true;
default =
builtins.substring 0 1 (lib.toUpper config.catppuccin.flavor)
+ builtins.substring 1 (-1) config.catppuccin.flavor;
};
};
userOptions = {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "Sean Kovacs";
};
username = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "sckova";
};
hostname = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = config.system.name;
};
fontSans = {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "Noto Sans";
};
size = lib.mkOption {
type = lib.types.int;
default = 12;
};
};
fontSerif = {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "Noto Serif";
};
size = lib.mkOption {
type = lib.types.int;
default = 12;
};
};
fontMono = {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "NotoSansM Nerd Font Mono";
};
size = lib.mkOption {
type = lib.types.int;
default = 10;
};
};
};
};
config = {
home.packages =
(with pkgs; [
# cli utilities
tmux
fastfetch
btop
killall
wget
ripgrep
ncdu
fzf
wl-clipboard
rclone
waypipe
spotdl
browsh
mosh
# development & tooling
gh
deno
prettier
prettierd
nixfmt-rfc-style
jdk21_headless
nerd-fonts.noto
# kde and kde theming
kde-rounded-corners
kdePackages.partitionmanager
# gui applications
vesktop
input-leap
libreoffice-qt-fresh
# helium-browser
bitwarden-desktop
qbittorrent
# gui applications ( games )
openmw
prismlauncher
# gui applications ( multimedia )
audacity
strawberry
musescore
mpv
gimp
calibre
spotify-player
# overrides
# (chromium.override {
# enableWideVine = true;
# })
(catppuccin-kde.override {
flavour = [
"latte"
config.catppuccin.flavor
];
accents = [
config.catppuccin.accent
];
})
])
++ [
pkgs.catppuccin-cursors.latteDark
pkgs.catppuccin-cursors.latteLight
pkgs.catppuccin-cursors."latte${config.catppuccinUpper.accent}"
pkgs.catppuccin-cursors."${config.catppuccin.flavor}Dark"
pkgs.catppuccin-cursors."${config.catppuccin.flavor}Light"
pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}"
];
home.file = {
".config/qt5ct" = {
source = ./qt/qt5ct;
recursive = true;
force = true;
};
".config/qt6ct" = {
source = ./qt/qt6ct;
recursive = true;
force = true;
};
};
gtk = {
enable = true;
iconTheme = {
name = "Colloid-Dark";
package = pkgs.colloid-icon-theme;
};
cursorTheme = {
name = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors";
package = pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}";
size = 24;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
};
# qt = {
# enable = true;
# # the following will be possible in NixOS 26.05
# # https://github.com/nix-community/home-manager/commit/f9d45d664ed06a11861d0ba29e34f390c07bf62e
# # until this flake is updated, it will use the configs as implemented above
# qt5ctSettings = {
# Appearance = {
# style = "Breeze";
# icon_theme = config.gtk.iconTheme.name;
# color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}";
# standard_dialogs = "default";
# };
# Fonts = {
# fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\"";
# general = "\"${config.userOptions.fontSans.name},${config.userOptions.fontSans.size}\"";
# };
# };
# qt6ctSettings = {
# Appearance = {
# style = "Breeze";
# icon_theme = config.gtk.iconTheme.name;
# color_scheme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}";
# standard_dialogs = "default";
# };
# Fonts = {
# fixed = "\"${config.userOptions.fontMono.name},${config.userOptions.fontMono.name}\"";
# general = "\"${config.userOptions.fontSans.name},${config.userOptions.fontSans.size}\"";
# };
# };
# };
services = {
spotifyd = {
enable = true;
settings = {
global = {
device_type = "computer";
dbus_type = "session";
disable_discovery = true;
use_mpris = true;
bitrate = 320;
initial_volume = 100;
volume_normalisation = true;
normalisation_pregain = -10;
};
};
};
};
catppuccin = {
enable = false;
cursors.enable = false;
cache.enable = true;
};
programs.plasma = {
workspace = {
colorScheme = "Catppuccin${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}";
cursor.theme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors";
splashScreen.theme = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}";
};
configFile = {
kdeglobals.KDE = {
DefaultDarkLookAndFeel = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}";
DefaultLightLookAndFeel = "Catpppuccin-Latte-${config.catppuccinUpper.accent}";
};
};
};
# 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 = "25.05";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
};
}