The Great Modularization

This commit is contained in:
wo2wz 2025-07-20 13:02:43 -04:00
parent e0b7d60a8d
commit eb279f1f65
34 changed files with 1356 additions and 1286 deletions

15
modules/home/bash.nix Normal file
View file

@ -0,0 +1,15 @@
{ config, ... }:
{
programs = {
bash = {
enable = true;
shellAliases = {
switch = "sudo nixos-rebuild switch";
boot = "sudo nixos-rebuild boot";
};
};
kitty.shellIntegration.enableBashIntegration = if config.programs.kitty.enable then true else false;
};
}

15
modules/home/default.nix Normal file
View file

@ -0,0 +1,15 @@
{ config, ... }:
{
imports = [
./bash.nix
./desktop-files.nix
./git.nix
./kitty.nix
./librewolf.nix
./plasma.nix
./spicetify.nix
./vesktop.nix
./vscodium.nix
];
}

View file

@ -0,0 +1,379 @@
{ config, pkgs, ... }:
let
ifHomeProgramEnable =
name:
if config.programs.${name}.enable then true else false;
in {
home.file = {
".local/share/applications/kitty.desktop" = {
enable = ifHomeProgramEnable "kitty";
text = ''
[Desktop Entry]
Version=1.0
Type=Application
Name=kitty
GenericName=Terminal emulator
Comment=Fast, feature-rich, GPU based terminal
TryExec=kitty
StartupNotify=true
Exec=kitty
Icon=kitty
Categories=System;TerminalEmulator;
X-TerminalArgExec=--
X-TerminalArgTitle=--title
X-TerminalArgAppId=--class
X-TerminalArgDir=--working-directory
X-TerminalArgHold=--hold
'';
};
".local/share/applications/librewolf.desktop" = {
enable = ifHomeProgramEnable "librewolf";
text = ''
[Desktop Entry]
Actions=new-private-window;new-window;profile-manager-window
Categories=Network;WebBrowser
Exec=nvidia-offload librewolf --name librewolf %U
GenericName=Web Browser
Icon=librewolf
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;x-scheme-handler/http;x-scheme-handler/https
Name=LibreWolf
StartupNotify=true
StartupWMClass=librewolf
Terminal=false
Type=Application
Version=1.4
[Desktop Action new-private-window]
Exec=nvidia-offload librewolf --private-window %U
Name=New Private Window
[Desktop Action new-window]
Exec=nvidia-offload librewolf --new-window %U
Name=New Window
[Desktop Action profile-manager-window]
Exec=nvidia-offload librewolf --ProfileManager
Name=Profile Manager
'';
};
".local/share/applications/steam.desktop" = {
enable = true;
text = ''
[Desktop Entry]
Name=Steam
Comment=Application for managing and playing games on Steam
Comment[pt_BR]=Aplicativo para jogar e gerenciar jogos no Steam
Comment[bg]=Приложение за ръководене и пускане на игри в Steam
Comment[cs]=Aplikace pro spravování a hraní her ve službě Steam
Comment[da]=Applikation til at håndtere og spille spil på Steam
Comment[nl]=Applicatie voor het beheer en het spelen van games op Steam
Comment[fi]=Steamin pelien hallintaan ja pelaamiseen tarkoitettu sovellus
Comment[fr]=Application de gestion et d'utilisation des jeux sur Steam
Comment[de]=Anwendung zum Verwalten und Spielen von Spielen auf Steam
Comment[el]=Εφαρμογή διαχείρισης παιχνιδιών στο Steam
Comment[hu]=Alkalmazás a Steames játékok futtatásához és kezeléséhez
Comment[it]=Applicazione per la gestione e l'esecuzione di giochi su Steam
Comment[ja]=Steam
Comment[ko]=Steam
Comment[no]=Program for å administrere og spille spill på Steam
Comment[pt_PT]=Aplicação para organizar e executar jogos no Steam
Comment[pl]=Aplikacja do zarządzania i uruchamiania gier na platformie Steam
Comment[ro]=Aplicație pentru administrarea și jucatul jocurilor pe Steam
Comment[ru]=Приложение для игр и управления играми в Steam
Comment[es]=Aplicación para administrar y ejecutar juegos en Steam
Comment[sv]=Ett program för att hantera samt spela spel på Steam
Comment[zh_CN]= Steam
Comment[zh_TW]= Steam
Comment[th]= Steam
Comment[tr]=Steam üzerinden oyun oynama ve düzenleme uygulaması
Comment[uk]=Програма для керування іграми та запуску ігор у Steam
Comment[vi]=ng dng đ qun lý và chơi trò chơi trên Steam
Exec=nvidia-offload steam %U
Icon=steam
Terminal=false
Type=Application
Categories=Network;FileTransfer;Game;
MimeType=x-scheme-handler/steam;x-scheme-handler/steamlink;
Actions=Store;Community;Library;Servers;Screenshots;News;Settings;BigPicture;Friends;
PrefersNonDefaultGPU=true
X-KDE-RunOnDiscreteGpu=true
[Desktop Action Store]
Name=Store
Name[pt_BR]=Loja
Name[bg]=Магазин
Name[cs]=Obchod
Name[da]=Butik
Name[nl]=Winkel
Name[fi]=Kauppa
Name[fr]=Magasin
Name[de]=Shop
Name[el]=ΚΑΤΑΣΤΗΜΑ
Name[hu]=Áruház
Name[it]=Negozio
Name[ja]=
Name[ko]=
Name[no]=Butikk
Name[pt_PT]=Loja
Name[pl]=Sklep
Name[ro]=Magazin
Name[ru]=Магазин
Name[es]=Tienda
Name[sv]=Butik
Name[zh_CN]=
Name[zh_TW]=
Name[th]=
Name[tr]=Mağaza
Name[uk]=Крамниця
Name[vi]=Ca hàng
Exec=nvidia-offload steam steam://store
[Desktop Action Community]
Name=Community
Name[pt_BR]=Comunidade
Name[bg]=Общност
Name[cs]=Komunita
Name[da]=Fællesskab
Name[nl]=Community
Name[fi]=Yhteisö
Name[fr]=Communauté
Name[de]=Community
Name[el]=Κοινότητα
Name[hu]=Közösség
Name[it]=Comunità
Name[ja]=
Name[ko]=
Name[no]=Samfunn
Name[pt_PT]=Comunidade
Name[pl]=Społeczność
Name[ro]=Comunitate
Name[ru]=Сообщество
Name[es]=Comunidad
Name[sv]=Gemenskap
Name[zh_CN]=
Name[zh_TW]=
Name[th]=
Name[tr]=Topluluk
Name[uk]=Спільнота
Name[vi]=Cng đng
Exec=nvidia-offload steam steam://url/SteamIDControlPage
[Desktop Action Library]
Name=Library
Name[pt_BR]=Biblioteca
Name[bg]=Библиотека
Name[cs]=Knihovna
Name[da]=Bibliotek
Name[nl]=Bibliotheek
Name[fi]=Kokoelma
Name[fr]=Bibliothèque
Name[de]=Bibliothek
Name[el]=Συλλογή
Name[hu]=Könyvtár
Name[it]=Libreria
Name[ja]=
Name[ko]=
Name[no]=Bibliotek
Name[pt_PT]=Biblioteca
Name[pl]=Biblioteka
Name[ro]=Colecţie
Name[ru]=Библиотека
Name[es]=Biblioteca
Name[sv]=Bibliotek
Name[zh_CN]=
Name[zh_TW]=
Name[th]=
Name[tr]=Kütüphane
Name[uk]=Бібліотека
Name[vi]=Thư vin
Exec=nvidia-offload steam steam://open/games
[Desktop Action Servers]
Name=Servers
Name[pt_BR]=Servidores
Name[bg]=Сървъри
Name[cs]=Servery
Name[da]=Servere
Name[nl]=Servers
Name[fi]=Palvelimet
Name[fr]=Serveurs
Name[de]=Server
Name[el]=Διακομιστές
Name[hu]=Szerverek
Name[it]=Server
Name[ja]=
Name[ko]=
Name[no]=Tjenere
Name[pt_PT]=Servidores
Name[pl]=Serwery
Name[ro]=Servere
Name[ru]=Серверы
Name[es]=Servidores
Name[sv]=Servrar
Name[zh_CN]=
Name[zh_TW]=
Name[th]=
Name[tr]=Sunucular
Name[uk]=Сервери
Name[vi]=Máy ch
Exec=nvidia-offload steam steam://open/servers
[Desktop Action Screenshots]
Name=Screenshots
Name[pt_BR]=Capturas de tela
Name[bg]=Снимки
Name[cs]=Snímky obrazovky
Name[da]=Skærmbilleder
Name[nl]=Screenshots
Name[fi]=Kuvankaappaukset
Name[fr]=Captures d'écran
Name[de]=Screenshots
Name[el]=Φωτογραφίες
Name[hu]=Képernyőmentések
Name[it]=Screenshot
Name[ja]=
Name[ko]=
Name[no]=Skjermbilder
Name[pt_PT]=Capturas de ecrã
Name[pl]=Zrzuty ekranu
Name[ro]=Capturi de ecran
Name[ru]=Скриншоты
Name[es]=Capturas
Name[sv]=Skärmdumpar
Name[zh_CN]=
Name[zh_TW]=
Name[th]=
Name[tr]=Ekran Görüntüleri
Name[uk]=Скріншоти
Name[vi]=nh chp
Exec=nvidia-offload steam steam://open/screenshots
[Desktop Action News]
Name=News
Name[pt_BR]=Notícias
Name[bg]=Новини
Name[cs]=Zprávy
Name[da]=Nyheder
Name[nl]=Nieuws
Name[fi]=Uutiset
Name[fr]=Actualités
Name[de]=Neuigkeiten
Name[el]=Νέα
Name[hu]=Hírek
Name[it]=Notizie
Name[ja]=
Name[ko]=
Name[no]=Nyheter
Name[pt_PT]=Novidades
Name[pl]=Aktualności
Name[ro]=Știri
Name[ru]=Новости
Name[es]=Noticias
Name[sv]=Nyheter
Name[zh_CN]=
Name[zh_TW]=
Name[th]=
Name[tr]=Haberler
Name[uk]=Новини
Name[vi]=Tin tc
Exec=nvidia-offload steam steam://open/news
[Desktop Action Settings]
Name=Settings
Name[pt_BR]=Configurações
Name[bg]=Настройки
Name[cs]=Nastavení
Name[da]=Indstillinger
Name[nl]=Instellingen
Name[fi]=Asetukset
Name[fr]=Paramètres
Name[de]=Einstellungen
Name[el]=Ρυθμίσεις
Name[hu]=Beállítások
Name[it]=Impostazioni
Name[ja]=
Name[ko]=
Name[no]=Innstillinger
Name[pt_PT]=Definições
Name[pl]=Ustawienia
Name[ro]=Setări
Name[ru]=Настройки
Name[es]=Parámetros
Name[sv]=Inställningar
Name[zh_CN]=
Name[zh_TW]=
Name[th]=
Name[tr]=Ayarlar
Name[uk]=Налаштування
Name[vi]=Thiết lp
Exec=nvidia-offload steam steam://open/settings
[Desktop Action BigPicture]
Name=Big Picture
Exec=nvidia-offload steam steam://open/bigpicture
[Desktop Action Friends]
Name=Friends
Name[pt_BR]=Amigos
Name[bg]=Приятели
Name[cs]=Přátelé
Name[da]=Venner
Name[nl]=Vrienden
Name[fi]=Kaverit
Name[fr]=Amis
Name[de]=Freunde
Name[el]=Φίλοι
Name[hu]=Barátok
Name[it]=Amici
Name[ja]=
Name[ko]=
Name[no]=Venner
Name[pt_PT]=Amigos
Name[pl]=Znajomi
Name[ro]=Prieteni
Name[ru]=Друзья
Name[es]=Amigos
Name[sv]=Vänner
Name[zh_CN]=
Name[zh_TW]=
Name[th]=
Name[tr]=Arkadaşlar
Name[uk]=Друзі
Name[vi]=Bn bè
Exec=nvidia-offload steam steam://open/friends
'';
};
".local/applications/vesktop.desktop" = {
enable = ifHomeProgramEnable "vesktop";
text = ''
[Desktop Entry]
Categories=Network;InstantMessaging;Chat
Comment[en_US]=
Comment=
Exec=nvidia-offload vesktop %U
GenericName[en_US]=Internet Messenger
GenericName=Internet Messenger
Icon=vesktop
Keywords=discord;vencord;electron;chat
Name[en_US]=Vesktop
Name=Vesktop
Path=
StartupNotify=true
StartupWMClass=Vesktop
Terminal=false
TerminalOptions=
Type=Application
Version=1.4
X-KDE-SubstituteUID=false
X-KDE-Username=
MimeType=x-scheme-handler/discord;
'';
};
};
}

13
modules/home/git.nix Normal file
View file

@ -0,0 +1,13 @@
{ config, ... }:
{
programs.git = {
enable = true;
userName = "wo2wz";
userEmail = "189177184+wo2wz@users.noreply.github.com";
extraConfig = {
init.defaultBranch = "main";
safe.directory = "/etc/nixos";
};
};
}

12
modules/home/kitty.nix Normal file
View file

@ -0,0 +1,12 @@
{ config, ... }:
{
programs.kitty = {
enable = true;
settings = {
tab_bar_style = "powerline";
tab_powerline_style = "round";
confirm_os_window_close = -1;
};
};
}

View file

@ -0,0 +1,74 @@
{ config, pkgs, ... }:
{
programs.librewolf = {
enable = true;
nativeMessagingHosts = [ pkgs.kdePackages.plasma-browser-integration ];
settings = {
"identity.fxaccounts.enabled" = true;
"clipboard.autocopy" = false;
};
policies = {
DefaultDownloadDirectory = "/home/wo2w/Downloads";
ExtensionSettings = with builtins; let
extension = shortId: uuid: {
name = uuid;
value = {
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
installation_mode = "normal_installed";
};
};
in
listToAttrs [
(extension "bitwarden-password-manager" "{446900e4-71c2-419f-a6a7-df9c091e268b}")
(extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}")
(extension "darkreader" "addon@darkreader.org")
(extension "decentraleyes" "jid1-BoFifL9Vbdl2zQ@jetpack")
(extension "happy-bonobo-disable-webrtc" "jid1-5Fs7iTLscUaZBgwr@jetpack")
(extension "enhancer-for-youtube" "enhancerforyoutube@maximerf.addons.mozilla.org")
(extension "private-relay" "private-relay@firefox.com")
(extension "indie-wiki-buddy" "{cb31ec5d-c49a-4e5a-b240-16c767444f62}")
(extension "libredirect" "7esoorv3@alefvanoon.anonaddy.me")
(extension "plasma-integration" "plasma-browser-integration@kde.org")
(extension "privacy-badger17" "jid1-MnnxcxisBPnSXQ@jetpack")
(extension "return-youtube-dislikes" "{762f9885-5a13-4abd-9c77-433dcd38b8fd}")
(extension "ublock-origin" "uBlock0@raymondhill.net")
];
};
profiles.wo2w = {
search = {
force = true;
default = "ddg";
privateDefault = "ddg";
};
settings = {
"browser.urlbar.suggest.history" = false;
"browser.urlbar.suggest.bookmark" = false;
"browser.urlbar.suggest.openpage" = false;
"browser.urlbar.suggest.topsites" = false;
"browser.urlbar.suggest.recentsearches" = false;
"browser.startup.page" = 3;
"network.trr.mode" = 2;
"network.trr.uri" = "https://base.dns.mullvad.net/dns-query";
"network.trr.custom_uri" = "https://base.dns.mullvad.net/dns-query";
"privacy.clearHistory.formdata" = true;
"privacy.clearHistory.siteSettings" = false;
"privacy.clearOnShutdown.cache" = false;
"privacy.clearOnShutdown.cookies" = false;
"privacy.clearOnShutdown.sessions" = false;
"privacy.donottrackheader.enabled" = true;
"widget.use-xdg-desktop-portal.file-picker" = 1;
};
};
};
# symlink for plasma browser integration native messaging in librewolf
home.file.".librewolf/native-messaging-hosts" = {
enable = true;
source = "${pkgs.kdePackages.plasma-browser-integration}/lib/mozilla/native-messaging-hosts";
};
}

13
modules/home/plasma.nix Normal file
View file

@ -0,0 +1,13 @@
{ inputs, config, ... }:
{
imports = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
programs.plasma = {
enable = true;
workspace.cursor = {
theme = "Bibata-Modern-Classic";
size = 24;
};
};
}

View file

@ -0,0 +1,29 @@
{ inputs, config, pkgs, ... }:
{
imports = [ inputs.spicetify-nix.homeManagerModules.default ];
programs.spicetify =
let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system};
in {
enable = true;
theme = {
name = "Tokyo";
src = pkgs.fetchFromGitHub {
owner = "evening-hs";
repo = "Spotify-Tokyo-Night-Theme";
rev = "d88ca06eaeeb424d19e0d6f7f8e614e4bce962be";
hash = "sha256-cLj9v8qtHsdV9FfzV2Qf4pWO8AOBXu51U/lUMvdEXAk=";
};
};
colorScheme = "Night";
enabledExtensions = with spicePkgs.extensions; [
adblock
hidePodcasts
shuffle
volumePercentage
history
];
};
}

133
modules/home/vesktop.nix Normal file
View file

@ -0,0 +1,133 @@
{ config, ... }:
{
programs.vesktop = {
enable = true;
vencord.settings = {
themeLinks = [ "https://catppuccin.github.io/discord/dist/catppuccin-mocha.theme.css" ];
enabledThemes = [ "catppuccin-mocha.theme.css" ];
plugins = {
ChatInputButtonAPI.enabled = true;
CommandsAPI.enabled = true;
DynamicImageModalAPI.enabled = true;
MessageAccessoriesAPI.enabled = true;
MessageEventsAPI.enabled = true;
MessagePopoverAPI.enabled = true;
MessageUpdaterAPI.enabled = true;
UserSettingsAPI.enabled = true;
BetterGifPicker.enabled = true;
BetterUploadButton.enabled = true;
BiggerStreamPreview.enabled = true;
CallTimer = {
enabled = true;
format = "stopwatch";
};
ClearURLs.enabled = true;
CopyFileContents.enabled = true;
CrashHandler.enabled = true;
Experiments = {
enabled = true;
toolbarDevMenu = false;
};
FakeNitro = {
enabled = true;
enableStickerBypass = true;
enableStreamQualityBypass = true;
enableEmojiBypass = true;
transformEmojis = true;
transformStickers = true;
transformCompoundSentence = false;
stickerSize = 160;
hyperLinkText = "{{NAME}}";
useHyperLinks = true;
disableEmbedPermissionCheck = false;
emojiSize = 48;
};
FixYoutubeEmbeds.enabled = true;
MessageLogger = {
enabled = true;
collapseDeleted = false;
deleteStyle = "overlay";
ignoreBots = false;
ignoreSelf = false;
ignoreUsers = "";
ignoreChannels = "";
ignoreGuilds = "";
logEdits = true;
logDeletes = true;
inlineEdits = true;
};
OpenInApp = {
enabled = true;
spotify = true;
steam = true;
epic = false;
tidal = false;
itunes = false;
};
PreviewMessage.enabled = true;
RelationshipNotifier = {
enabled = true;
notices = true;
offlineRemovals = true;
friends = true;
friendRequestCancels = true;
servers = true;
groups = true;
};
ReplaceGoogleSearch = {
enabled = true;
customEngineName = "DuckDuckGo";
customEngineURL = "https://duckduckgo.com/&q=";
};
ReverseImageSearch.enabled = true;
ServerInfo.enabled = true;
ShowHiddenChannels = {
enabled = true;
showMode = 0;
hideUnreads = true;
defaultAllowedUsersAndRolesDropdownState = true;
};
SpotifyCrack = {
enabled = true;
noSpotifyAutoPause = true;
keepSpotifyActivityOnIdle = false;
};
Translate = {
enabled = true;
showChatBarButton = true;
service = "google";
deeplApiKey = "";
autoTranslate = false;
showAutoTranslateTooltip = true;
};
ValidReply.enabled = true;
ValidUser.enabled = true;
VoiceDownload.enabled = true;
VoiceMessages.enabled = true;
VolumeBooster = {
enabled = true;
multiplier = 5;
};
WebKeybinds.enabled = true;
WebScreenShareFixes.enabled = true;
YoutubeAdblock.enabled = true;
BadgeAPI.enabled = true;
NoTrack = {
enabled = true;
disableAnalytics = true;
};
WebContextMenus = {
enabled = true;
addBack = true;
};
Settings = {
enabled = true;
settingsLocation = "aboveNitro";
};
SupportHelper.enabled = true;
DisableDeepLinks.enabled = true;
};
};
};
}

18
modules/home/vscodium.nix Normal file
View file

@ -0,0 +1,18 @@
{ config, pkgs, ... }:
{
programs.vscode = {
enable = true;
package = pkgs.vscodium;
profiles.wo2w = {
extensions = with pkgs.vscode-extensions; [
# theme
enkia.tokyo-night
# language extensions
jnoortheen.nix-ide
# discord rpc
leonardssh.vscord
];
};
};
}