nix/home/default.nix

254 lines
6.5 KiB
Nix
Executable file

{
config,
pkgs,
pkgs-unstable,
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;
readOnly = true;
default = 11;
};
package = lib.mkOption {
type = lib.types.package;
readOnly = true;
default = pkgs.noto-fonts;
};
};
fontSerif = {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "Noto Serif";
};
size = lib.mkOption {
type = lib.types.int;
readOnly = true;
default = 11;
};
package = lib.mkOption {
type = lib.types.package;
readOnly = true;
default = pkgs.noto-fonts;
};
};
fontMono = {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "NotoSansM Nerd Font Mono";
};
size = lib.mkOption {
type = lib.types.int;
readOnly = true;
default = 10;
};
package = lib.mkOption {
type = lib.types.package;
readOnly = true;
default = pkgs.nerd-fonts.noto;
};
};
fontEmoji = {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "Noto Emoji";
};
size = lib.mkOption {
type = lib.types.int;
readOnly = true;
default = 10;
};
package = lib.mkOption {
type = lib.types.package;
readOnly = true;
default = pkgs.noto-fonts-color-emoji;
};
};
cursor = let
attrName = config.catppuccin.flavor + config.catppuccinUpper.accent;
in {
name = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors";
};
package = lib.mkOption {
type = lib.types.package;
readOnly = true;
default = pkgs.catppuccin-cursors.${attrName};
};
size = lib.mkOption {
type = lib.types.int;
readOnly = true;
default = 24;
};
path = lib.mkOption {
type = lib.types.str;
readOnly = true;
default = "${pkgs.catppuccin-cursors.${attrName}}/share/icons";
};
};
isDark = lib.mkOption {
type = lib.types.bool;
readOnly = true;
default = config.catppuccin.flavor != "latte";
};
};
};
config = {
home.packages =
(with pkgs; [
# cli utilities
tmux
fastfetch
btop
wget
ripgrep
ncdu
fzf
wl-clipboard
rclone
waypipe
spotdl
browsh
mosh
spotify-player
gh
# development & tooling
jdk21_headless
quickemu
nerd-fonts.noto
noto-fonts
noto-fonts-color-emoji
nix-prefetch
# kde and kde theming
kde-rounded-corners
kdePackages.partitionmanager
# gui applications
input-leap
libreoffice-qt-fresh
# nur.repos.forkprince.helium-nightly
qbittorrent
nautilus
# gui applications ( multimedia )
audacity
strawberry
musescore
gimp
calibre
spotify-qt
# overrides
# (chromium.override {
# enableWideVine = true;
# })
(catppuccin-kde.override {
flavour = [config.catppuccin.flavor];
accents = [config.catppuccin.accent];
})
])
++ [
pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}"
];
services = {
spotifyd = {
enable = true;
package = pkgs-unstable.spotifyd;
settings = {
global = {
device_type = "computer";
dbus_type = "session";
disable_discovery = true;
use_mpris = true;
bitrate = 320;
initial_volume = 100;
volume_normalisation = true;
normalisation_pregain = 0;
};
};
};
};
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;
};
}