Refactor configuration to be more modular.

TODO: Update the documentation in the README to reflect changes
This commit is contained in:
caem 2024-08-26 15:01:33 +02:00
parent 7a30ff9f94
commit af0078d7af
Signed by: caem
GPG key ID: 69A830D03203405F
32 changed files with 889 additions and 1125 deletions

View file

@ -0,0 +1,30 @@
{ ... }:
{
home-manager.users.hu = {
programs.fastfetch = {
enable = true;
settings = {
modules = [
"title"
"separator"
"os"
"kernel"
"initsystem"
"uptime"
"datetime"
"packages"
"terminal"
"wm"
"shell"
"cpu"
"gpu"
"memory"
"break"
"colors"
];
};
};
};
}

View file

@ -0,0 +1,413 @@
{ config, pkgs, ... }:
{
environment.persistence."/nix/persist".users.hu.directories = [
".mozilla/firefox/shaga"
];
home-manager.users.hu = {
programs.firefox = {
enable = true;
package = pkgs.firefox-esr;
policies = {
EnableTrackingProtection = {
Value = true;
Cryptomining = true;
Fingerprinting = true;
EmailTracking = true;
};
DisableTelemetry = true;
DisablePocket = true;
DisableFirefoxStudies = true;
DisableFirefoxAccounts = true;
DisableAccounts = true;
DontCheckDefaultBrowser = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
NoDefaultBookmarks = true;
Cookies = {
Behaviour = "reject-foreign";
BehaviourPrivateBrowsing = "reject-foreign";
};
SearchEngines = { # ESR only
Remove = [ "Bing" "Google" "DuckDuckGo" "Wikipedia (en)" ];
};
ExtensionSettings = {
"wikipedia@search.mozilla.org" = {
installation_mode = "blocked";
};
"google@search.mozilla.org" = {
installation_mode = "blocked";
};
"bing@search.mozilla.org" = {
installation_mode = "blocked";
};
"ddg@search.mozilla.org" = {
installation_mode = "blocked";
};
};
"3rdparty".Extensions = {
"uBlock0@raymondhill.net".adminSettings = {
userSettings = {
importedLists = [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt"
];
externalLists = "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt";
};
selectedFilterLists = [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt"
"user-filters"
"ublock-filters"
"ublock-badware"
"ublock-privacy"
"ublock-quick-fixes"
"ublock-unbreak"
"easylist"
"adguard-generic"
"adguard-mobile"
"easyprivacy"
"adguard-spyware"
"adguard-spyware-url"
"block-lan"
"urlhaus-1"
"curben-phishing"
"plowe-0"
"dpollock-0"
"fanboy-cookiemonster"
"ublock-cookies-easylist"
"adguard-cookies"
"ublock-cookies-adguard"
"fanboy-social"
"adguard-social"
"fanboy-thirdparty_social"
"easylist-chat"
"easylist-newsletters"
"easylist-notifications"
"easylist-annoyances"
"adguard-mobile-app-banners"
"adguard-other-annoyances"
"adguard-popup-overlays"
"adguard-widgets"
"ublock-annoyances"
"ALB-0"
"BGR-0"
"CHN-0"
"CZE-0"
"DEU-0"
"EST-0"
"ara-0"
"spa-1"
"spa-0"
"FIN-0"
"FRA-0"
"GRC-0"
"HRV-0"
"HUN-0"
"IDN-0"
"ISR-0"
"IND-0"
"IRN-0"
"ISL-0"
"ITA-0"
"JPN-1"
"KOR-1"
"LTU-0"
"LVA-0"
"MKD-0"
"NLD-0"
"NOR-0"
"POL-0"
"POL-2"
"ROU-1"
"RUS-0"
"SWE-1"
"SVN-0"
"THA-0"
"TUR-0"
"VIE-1"
];
};
};
};
profiles.shaga = {
isDefault = true;
search = {
force = true;
default = "Gruble";
order = [ "Gruble" "Nix Packages" "Nix Options" "Home-manager options" ];
engines = {
"Gruble" = {
urls = [
{
template = "https://gruble.de/search";
params = [
{ name = "q"; value = "{searchTerms}"; }
];
}
];
iconUpdateURL = "https://gruble.de/favicon.ico";
updateInterval = 7 * 24 * 60 * 60 * 1000; # Weekly
definedAliases = [ "@g" ];
};
"Nix Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "channel"; value = "unstable"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
iconUpdateURL = "https://nixos.org/favicon.png";
updateInterval = 7 * 24 * 60 * 60 * 1000; # Weekly
definedAliases = [ "@np" ];
};
"Nix Options" = {
urls = [{
template = "https://search.nixos.org/options";
params = [
{ name = "type"; value = "packages"; }
{ name = "channel"; value = "unstable"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
iconUpdateURL = "https://nixos.org/favicon.png";
updateInterval = 7 * 24 * 60 * 60 * 1000; # Weekly
definedAliases = [ "@no" ];
};
"Home-manager options" = {
urls = [{
template = "https://home-manager-options.extranix.com";
params = [
{ name = "release"; value = "master"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
iconUpdateURL = "https://home-manager-options.extranix.com/images/favicon.png";
updateInterval = 7 * 24 * 60 * 60 * 1000; # Weekly
definedAliases = [ "@ho" ];
};
};
};
extensions = with config.nur.repos.rycee.firefox-addons; [
ublock-origin
image-search-options
bitwarden
translate-web-pages
tampermonkey
];
settings = {
"browser.urlbar.quicksuggest.contextualOptIn.topPosition" = false;
"extensions.postDownloadThirdPartyPrompt" = false;
"extensions.getAddons.cache.enabled" = false;
"browser.search.update" = false;
"extensions.autoDisableScopes" = 0;
"browser.startup.page" = 0;
"browser.startup.homepage" = "about:blank";
"browser.newtabpage.enabled" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.default.sites" = "";
"geo.provider.use_gpsd" = false;
"extensions.getAddons.showPane" = false;
"htmlaboutaddons.recommendations.enabled" = false;
"discovery.enabled" = false;
"browser.shopping.experience2023.enabled" = false;
"app.shield.optoutstudies.enabled" = false;
"app.normandy.enabled" = false;
"app.normandy.api_url" = "";
"breakpad.reportURL" = "";
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"browser.search.serpEventTelemetry.enabled" = false;
"dom.security.unexpected_system_load_telemetry_enabled" = false;
"network.trr.confirmation_telemetry_enabled" = false;
"security.app_menu.recordEventTelemetry" = false;
"security.certerrors.recordEventTelemetry" = false;
"security.protectionspopup.recordEventTelemetry" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.pioneer-new-studies-available" = false;
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"toolkit.telemetry.server" = "127.0.0.1";
"browser.newtabpage.activity-stream.telemetry.structuredIngestion.endpoint" = "127.0.0.1";
"browser.tabs.crashReporting.sendReport" = false;
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
"captivedetect.canonicalURL" = "";
"network.captive-portal-service.enabled" = false;
"network.connectivity-service.enabled" = false;
"browser.safebrowsing.downloads.remote.enabled" = false;
"browser.urlbar.speculativeConnect.enabled" = false;
"browser.search.suggest.enabled" = false;
"browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
"browser.urlbar.suggest.searches" = false;
"browser.urlbar.suggest.bookmark" = false;
"browser.urlbar.suggest.addons" = false;
"browser.urlbar.suggest.calculator" = false;
"browser.urlbar.suggest.clipboard" = false;
"browser.urlbar.suggest.engines" = false;
"browser.urlbar.suggest.history" = false;
"browser.urlbar.suggest.mdn" = false;
"browser.urlbar.suggest.openpage" = false;
"browser.urlbar.suggest.pocket" = false;
"browser.urlbar.suggest.recentsearches" = false;
"browser.urlbar.suggest.remotetab" = false;
"browser.urlbar.suggest.topsites" = false;
"browser.urlbar.suggest.trending" = false;
"browser.urlbar.suggest.weather" = false;
"browser.urlbar.suggest.yelp" = false;
"browser.urlbar.richSuggestions.tail" = false;
"browser.urlbar.quicksuggest.shouldShowOnboardingDialog" = false;
"browser.urlbar.quicksuggest.rustEnabled" = false;
"browser.urlbar.richSuggestions.featureGate" = false;
"browser.urlbar.trending.featureGate" = false;
"browser.urlbar.addons.featureGate" = false;
"browser.urlbar.mdn.featureGate" = false;
"browser.urlbar.pocket.featureGate" = false;
"browser.urlbar.weather.featureGate" = false;
"browser.formfill.enable" = false;
"dom.forms.autocomplete.formautofill" = false;
"extensions.formautofill.addresses.capture.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
"signon.autofillForms" = false;
"signon.rememberSignons" = false;
"signon.formlessCapture.enabled" = false;
"network.auth.subresource-http-auth-allow" = 1;
"dom.security.https_only_mode" = true;
"network.http.referer.XOriginTrimmingPolicy" = 2;
"privacy.userContext.enabled" = true;
"privacy.userContext.ui.enabled" = true;
"privacy.sanitize.sanitizeOnShutdown" = true;
"privacy.clearHistory.siteSettings" = true;
"media.peerconnection.ice.no_host" = true;
"browser.download.start_downloads_in_tmp_dir" = true;
"browser.helperApps.deleteTempFileOnExit" = true;
"browser.uitour.enabled" = false;
"pdfjs.enableScripting" = false;
"browser.download.useDownloadDir" = false;
"browser.download.alwaysOpenPanel" = true;
"browser.download.manager.addToRecentDocs" = false;
"browser.download.always_ask_before_handling_new_types" = true;
"browser.contentblocking.category" = "strict";
"privacy.clearOnShutdown.cache" = true;
"privacy.clearOnShutdown.downloads" = true;
"privacy.clearOnShutdown.formdata" = true;
"privacy.clearOnShutdown.history" = true;
"privacy.clearOnShutdown.sessions" = true;
"privacy.clearOnShutdown.cookies" = true;
"privacy.clearOnShutdown.offlineApps" = true;
"privacy.clearSiteData.historyFormDataAndDownloads" = true;
"browser.startup.homepage_override.mstone" = "ignore";
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false;
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
"browser.messaging-system.whatsNewPanel.enabled" = false;
"browser.urlbar.showSearchTerms.enabled" = false;
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = "";
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines" = "";
# https://github.com/elFarto/nvidia-vaapi-driver?tab=readme-ov-file#firefox
"media.ffmpeg.vaapi.enabled" = true;
"media.rdd-ffmpeg.enabled" = true;
"media.av1.enabled" = false;
# Options for the firefox-ui-fix using Photon
# https://github.com/black7375/Firefox-UI-Fix/blob/master/user.js
"userChrome.tab.connect_to_window" = true;
"userChrome.tab.color_like_toolbar" = true;
"userChrome.tab.lepton_like_padding" = false;
"userChrome.tab.photon_like_padding" = true;
"userChrome.tab.dynamic_separator" = false;
"userChrome.tab.static_separator" = true;
"userChrome.tab.static_separator.selected_accent" = false;
"userChrome.tab.newtab_button_like_tab" = false;
"userChrome.tab.newtab_button_smaller" = true;
"userChrome.tab.newtab_button_proton" = false;
"userChrome.icon.panel_full" = false;
"userChrome.icon.panel_photon" = true;
"userChrome.icon.panel_sparse" = false;
"userChrome.tab.box_shadow" = false;
"userChrome.tab.bottom_rounded_corner" = false;
"userChrome.tab.photon_like_contextline" = true;
"userChrome.rounding.square_tab" = true;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"svg.context-properties.content.enabled" = true;
"browser.compactmode.show" = true;
"browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar" = false;
"layout.css.has-selector.enabled" = true;
"userChrome.compatibility.theme" = true;
"userChrome.compatibility.os" = true;
"userChrome.theme.built_in_contrast" = true;
"userChrome.theme.system_default" = true;
"userChrome.theme.proton_color" = true;
"userChrome.theme.proton_chrome" = true;
"userChrome.theme.fully_color" = true;
"userChrome.theme.fully_dark" = true;
"userChrome.decoration.cursor" = true;
"userChrome.decoration.field_border" = true;
"userChrome.decoration.download_panel" = true;
"userChrome.decoration.animate" = true;
"userChrome.padding.tabbar_width" = true;
"userChrome.padding.tabbar_height" = true;
"userChrome.padding.toolbar_button" = true;
"userChrome.padding.navbar_width" = true;
"userChrome.padding.urlbar" = true;
"userChrome.padding.bookmarkbar" = true;
"userChrome.padding.infobar" = true;
"userChrome.padding.menu" = true;
"userChrome.padding.bookmark_menu" = true;
"userChrome.padding.global_menubar" = true;
"userChrome.padding.panel" = true;
"userChrome.padding.popup_panel" = true;
"userChrome.tab.multi_selected" = true;
"userChrome.tab.unloaded" = true;
"userChrome.tab.letters_cleary" = true;
"userChrome.tab.close_button_at_hover" = true;
"userChrome.tab.sound_hide_label" = true;
"userChrome.tab.sound_with_favicons" = true;
"userChrome.tab.pip" = true;
"userChrome.tab.container" = true;
"userChrome.tab.crashed" = true;
"userChrome.fullscreen.overlap" = true;
"userChrome.fullscreen.show_bookmarkbar" = true;
"userChrome.icon.library" = true;
"userChrome.icon.panel" = true;
"userChrome.icon.menu" = true;
"userChrome.icon.context_menu" = true;
"userChrome.icon.global_menu" = true;
"userChrome.icon.global_menubar" = true;
"userChrome.icon.1-25px_stroke" = true;
"userContent.player.ui" = true;
"userContent.player.icon" = true;
"userContent.player.noaudio" = true;
"userContent.player.size" = true;
"userContent.player.click_to_play" = true;
"userContent.player.animate" = true;
"userContent.newTab.full_icon" = true;
"userContent.newTab.animate" = true;
"userContent.newTab.pocket_to_last" = true;
"userContent.newTab.searchbar" = true;
"userContent.page.field_border" = true;
"userContent.page.illustration" = true;
"userContent.page.proton_color" = true;
"userContent.page.dark_mode" = true;
"userContent.page.proton" = true;
};
};
};
};
}

54
modules/packages/foot.nix Normal file
View file

@ -0,0 +1,54 @@
{ ... }:
{
home-manager.users.hu = {
programs.foot = {
enable = true;
settings = {
main = {
pad = "6x6 center";
font = "Go Mono Nerd Font:size=12";
};
mouse = {
hide-when-typing = "yes";
};
scrollback = {
lines = 10000;
};
colors = {
alpha = 0.9;
foreground = "c5c9c5";
background = "181616";
selection-foreground = "c8c093";
selection-background = "2d4f67";
regular0 = "0d0c0c";
regular1 = "c4746e";
regular2 = "8a9a7b";
regular3 = "c4b28a";
regular4 = "8ba4b0";
regular5 = "a292a3";
regular6 = "8ea4a2";
regular7 = "c8c093";
bright0 = "a6a69c";
bright1 = "e46876";
bright2 = "87a987";
bright3 = "e6c384";
bright4 = "7fb4ca";
bright5 = "938aa9";
bright6 = "7aa89f";
bright7 = "c5c9c5";
"16" = "b6927b";
"17" = "b98d7b";
};
};
};
};
}

21
modules/packages/git.nix Normal file
View file

@ -0,0 +1,21 @@
{ ... }:
{
home-manager.users.hu = {
programs.git = {
enable = true;
userName = "caem";
userEmail = "me@caem.dev";
signing = {
key = "E50FC66B5062070DC462661C69A830D03203405F";
signByDefault = true;
};
extraConfig = {
init.defaultBranch = "master";
};
};
};
}

44
modules/packages/nvim.nix Normal file
View file

@ -0,0 +1,44 @@
{ pkgs, ... }:
{
environment.persistence."/nix/persist".users.hu.directories = [
".local/share/nvim"
".local/state/nvim"
];
environment.variables = {
EDITOR = "nvim";
};
home-manager.users.hu = {
programs.neovim = {
enable = true;
defaultEditor = true;
extraPackages = with pkgs; [
lua-language-server
nodePackages.intelephense
nodePackages.typescript-language-server
clang-tools
ripgrep
nil
gcc
basedpyright
rust-analyzer
zathura
git
texliveFull
luajitPackages.jsregexp
luajitPackages.luarocks
fd
texlab
haskell-language-server
];
};
home.file."/home/hu/.config/nvim" = {
source = ../../dotfiles/nvim;
recursive = true;
};
};
}

11
modules/packages/rofi.nix Normal file
View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
home-manager.users.hu = {
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
theme = "sidebar";
};
};
}

16
modules/packages/tmux.nix Normal file
View file

@ -0,0 +1,16 @@
{ ... }:
{
# TODO: Port changes over from dots and streamline workflow
programs.tmux = {
enable = true;
prefix = "C-Space";
customPaneNavigationAndResize = true;
baseIndex = 1;
extraConfig = ''
bind v split-window -v
bind c split-window -h
bind n new-window
'';
};
}

View file

@ -0,0 +1,55 @@
{ ... }:
{
home-manager.users.hu = {
programs.waybar = {
enable = true;
systemd = {
enable = true;
};
settings = {
bar = {
layer = "top";
position = "top";
height = 32;
output = [
"DP-1"
];
modules-left = [ "hyprland/workspaces" "hyprland/submap" ];
modules-center = [ "hyprland/window" ];
modules-right = [ "tray" "clock" ];
};
};
style = ''
* {
all: unset;
border-radius: 0;
font-family: "Go Mono Nerd Font";
font-size: 11pt;
min-height: 0;
}
window#waybar {
color: #c5c9c5;
background: #181616;
border-bottom: 2px solid rgba(53,132,228, 1);
}
#workspaces button {
padding: 0 8pt 0 8pt;
}
#workspaces button.active {
color: #3584e4;
}
#clock {
padding: 0 8pt 0 8pt;
}
'';
};
};
}

43
modules/packages/zsh.nix Normal file
View file

@ -0,0 +1,43 @@
{ pkgs, ... }:
{
users.users.hu.shell = pkgs.zsh;
environment.variables = {
ZDOTDIR = "/home/hu/.config/zsh";
};
home-manager.users.hu = {
home.packages = with pkgs; [
fzf
thefuck
zsh-fzf-tab
zsh-completions
zsh-autosuggestions
zsh-syntax-highlighting
nix-zsh-completions
zsh-nix-shell
];
home.sessionVariables = {
ZDOTDIR = "/home/hu/.config/zsh";
};
home.file."/home/hu/.config/zsh/conf.d" = {
source = ../../dotfiles/zsh/conf.d;
recursive = true;
};
home.file."/home/hu/.config/zsh/.zshrc" = {
text = ''
#!/usr/bin/env zsh
SYNTAX_PLUGIN="${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
AUTOSUGGEST_PLUGIN="${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh"
NIX_SHELL_PLUGIN="${pkgs.zsh-nix-shell}/share/zsh-nix-shell/nix-shell.plugin.zsh"
FZF_TAB_PLUGIN="${pkgs.zsh-fzf-tab}/share/fzf-tab/fzf-tab.plugin.zsh"
'' + (builtins.readFile ../../dotfiles/zsh/.zshrc);
};
};
}