feat: Add host sydpc

My, this is a lot TwT.  Much work was batched as part of the transition from
guix-rebound to nixos-testbed/sydpc.

- Discord/Vesktop module & config.
- Syncthing setup.
- Assorted Emacs changes.
- Waybar config.
- Niri config.
- Steam config.
- Some MPD.
- Stylix config.
- Files/Impermanence things.
- Enable Ghostty.
- God knows what else.
This commit is contained in:
Madeleine Sydney
2025-03-17 12:34:26 -06:00
parent 4464e7cec1
commit c48a93ad10
40 changed files with 2632 additions and 179 deletions

View File

@@ -7,6 +7,38 @@ in {
lib.mkEnableOption "Firefox, à la crumb";
config = lib.mkIf cfg.enable {
# We are very granular about which Firefox files are persisted. While there
# is a lot of mutable state (e.g. search history), it is mixed with less
# mutable configuration that we force ourselves to manage declaratively.
#
# For an overview of important files in the profile directory, see
# https://support.mozilla.org/en-US/kb/recovering-important-data-from-an-old-profile.
sydnix.impermanence =
{ directories = [ ".mozilla/firefox/msyds" ]; };
# let p = ".mozilla/firefox/msyds";
# in {
# files = [
# # Passwords
# "${p}/key4.db"
# "${p}/logins.json"
# "${p}/logins-backup.json"
# # Site-specific permissions
# "${p}/permissions.sqlite"
# # Bookmarks, downloads and browsing history
# "${p}/places.sqlite"
# # Cached favicons for use in the history menu.
# "${p}/favicons.sqlite"
# # Cookies
# "${p}/cookies.sqlite"
# # Security certificate settings
# "${p}/cert9.db"
# # Form history (for completions)
# "${p}/formhistory.sqlite"
# ];
# };
stylix.targets.firefox.profileNames = [ "msyds" ];
programs.firefox = {
enable = true;
@@ -80,6 +112,7 @@ in {
overlays = [ inputs.nur.overlays.default ];
};
in
# https://nur.nix-community.org/repos/rycee/
with pkgs'.nur.repos.rycee.firefox-addons; [
ublock-origin
darkreader
@@ -87,12 +120,68 @@ in {
vimium
kagi-search
duckduckgo-privacy-essentials
edit-with-emacs
textern
copy-as-org-mode
clearurls
sidebery
adaptive-tab-bar-colour
adnauseam
# tree-style-tab
# tab-unload-for-tree-style-tab
# tst-tab-search
# tst-more-tree-commands
# tst-lock-tree-collapsed
# tst-fade-old-tabs
# tst-bookmarks-subpanel
# move-unloaded-tabs-for-tst
tab-stash
unpaywall
sourcegraph
sponsorblock
cookies-txt
copy-selected-tabs-to-clipboard
copy-link-text
df-youtube
];
};
# https://github.com/mbnuqw/sidebery/wiki/Firefox-Styles-Snippets-(via-userChrome.css)
userChrome = ''
/* Hide the tab bar in favour of that provided by the tree-style tabs
* addon */
/**
* Dynamic Horizontal Tabs Toolbar (with animations)
* sidebar.verticalTabs: false (with native horizontal tabs)
*/
#main-window #TabsToolbar > .toolbar-items {
overflow: hidden;
transition: height 0.3s 0.3s !important;
}
/* Default state: Set initial height to enable animation */
#main-window #TabsToolbar > .toolbar-items { height: 3em !important; }
#main-window[uidensity="touch"] #TabsToolbar > .toolbar-items { height: 3.35em !important; }
#main-window[uidensity="compact"] #TabsToolbar > .toolbar-items { height: 2.7em !important; }
/* Hidden state: Hide native tabs strip */
#main-window[titlepreface*="\200b"] #TabsToolbar > .toolbar-items { height: 0 !important; }
/* Hidden state: Fix z-index of active pinned tabs */
#main-window[titlepreface*="\200b"] #tabbrowser-tabs { z-index: 0 !important; }
/* Hidden state: Hide window buttons in tabs-toolbar */
#main-window[titlepreface*="\200b"] #TabsToolbar .titlebar-spacer,
#main-window[titlepreface*="\200b"] #TabsToolbar .titlebar-buttonbox-container {
display: none !important;
}
/* [Optional] Uncomment block below to show window buttons in nav-bar
* (maybe, I didn't test it on non-linux-i3wm env) */
/* #main-window[titlepreface*="\200b"] #nav-bar > .titlebar-buttonbox-container,
#main-window[titlepreface*="\200b"] #nav-bar > .titlebar-buttonbox-container > .titlebar-buttonbox {
display: flex !important;
} */
/* [Optional] Uncomment one of the line below if you need space near
* window buttons */
/* #main-window[titlepreface*="\200b"] #nav-bar > .titlebar-spacer[type="pre-tabs"] { display: flex !important; } */
/* #main-window[titlepreface*="\200b"] #nav-bar > .titlebar-spacer[type="post-tabs"] { display: flex !important; } */
'';
search = {
# Override non-declared settings.
force = true;
@@ -101,6 +190,14 @@ in {
default = "Kagi";
privateDefault = "DuckDuckGo";
engines = {
"Kagi" = {
urls = [{
template = "https://kagi.com/search";
params = [
{ name = "q"; value = "{searchTerms}"; }
];
}];
};
"Nixpkgs" = {
urls = [{
template = "https://search.nixos.org/packages";
@@ -132,9 +229,13 @@ in {
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.urlbar.sponsoredTopSites" = false;
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsored"
= false;
= false;
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSites"
= false;
= false;
"browser.sessionstore.persist_closed_tabs_between_sessions" = true;
"browser.download.always_ask_before_handling_new_types" = true;
# Enable userChrome.css.
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
};
};