# SPDX-FileCopyrightText: 2025 Ethan Reece # # SPDX-License-Identifier: MIT { config, inputs, pkgs, username, homeDirectory, ... }: { imports = [ { nixpkgs.overlays = [ inputs.nur.overlays.default ]; } ../base-linux.nix ../discord.nix ]; sops.age.keyFile = "${homeDirectory}/.config/sops/age/keys.txt"; # https://nix.catppuccin.com/search/rolling/ catppuccin = { floorp.profiles.default.force = true; }; # https://nix-community.github.io/stylix/options/modules/alacritty.html stylix.targets = { floorp = { profileNames = [ "default" ]; }; }; nixGL = { packages = import inputs.nixgl { inherit pkgs; enable32bits = false; enableIntelX86Extensions = false; }; defaultWrapper = "mesa"; installScripts = [ "mesa" ]; vulkan.enable = true; }; home = { inherit username homeDirectory; packages = [ pkgs.bitwarden-desktop # TODO: switch to `rbw` # pkgs.cacert - TODO: should be used on NixOS (config.lib.nixGL.wrap pkgs.cheese) # pkgs.cups - TODO: should be used on NixOS pkgs.dino pkgs.element-desktop # TODO: switch to programs.element-desktop # pkgs.firefox # pkgs.firefoxpwa - requires system access # pkgs.high-tide - doesn't work (config.lib.nixGL.wrap pkgs.kdePackages.audiotube) pkgs.kdePackages.dolphin pkgs.kdePackages.falkon # pkgs.ladybird pkgs.libreoffice-fresh pkgs.librewolf # TODO: switch to programs.librewolf pkgs.logseq # TODO: switch to `joplin-desktop` pkgs.mupdf pkgs.signal-desktop # pkgs.simplex-chat-desktop - not available on aarch64 # pkgs.slacky - doesn't work, requires update pkgs.teams-for-linux # TODO: Move to flake in UTD folder pkgs.telegram-desktop # pkgs.tidal-hifi - aarch64 build broken # pkgs.widevine-cdm - doesn't work ]; }; programs = { nushell.shellAliases = { armcfi = "cd `~/Documents/2025 Summer/syssec/proj/armcfi`"; }; chromium = { enable = true; }; freetube = { enable = true; package = (config.lib.nixGL.wrap pkgs.freetube); settings = { rememberHistory = false; rememberSearchHistory = false; saveWatchedProgress = false; checkForUpdates = false; autoplayVideos = false; useSponsorBlock = true; useDeArrowTitles = true; useDeArrowThumbnails = true; }; }; mpv = { enable = true; package = ( config.lib.nixGL.wrap ( pkgs.mpv.override { # extraUmpvWrapperArgs = [ # "--add-flags" # "--gpu-api=opengl" # ]; scripts = [ pkgs.mpvScripts.mpv-cheatsheet pkgs.mpvScripts.mpv-discord pkgs.mpvScripts.quality-menu pkgs.mpvScripts.sponsorblock pkgs.mpvScripts.visualizer pkgs.mpvScripts.webtorrent-mpv-hook ]; } ) ); config = { gpu-api = "opengl"; }; }; feh = { enable = true; }; # TODO: Disable Guix integration # zathura = { # enable = true; # }; wezterm = { enable = true; package = (config.lib.nixGL.wrap pkgs.wezterm); }; yt-dlp = { enable = true; }; kitty = { enable = true; package = (config.lib.nixGL.wrap pkgs.kitty); enableGitIntegration = true; settings = { clipboard_control = "write-primary write-clipboard no-append"; }; }; # TODO: Add https://www.reddit.com/r/lumetrium_definer/comments/1buwmoa/tuja_vortaro_esperanto_dictionary_at/?context=3 # floorp = { enable = true; package = (config.lib.nixGL.wrap pkgs.floorp); languagePacks = [ "eo" "en-US" ]; policies = { ExtensionSettings = let # mozilla.github.io/policy-templates mkMozillaAddonUrl = id: "https://addons.mozilla.org/firefox/downloads/latest/${id}/latest.xpi"; in { # "*".installation_mode = "blocked"; "*".installation_mode = "allowed"; # PopUpOFF "{154cddeb-4c8b-4627-a478-c7e5b427ffdf}" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "{154cddeb-4c8b-4627-a478-c7e5b427ffdf}"; }; # The wall "{4df1496d-becb-4eb8-9f3e-08a52cf3dd6a}" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "{4df1496d-becb-4eb8-9f3e-08a52cf3dd6a}"; }; # MWMBL Web Crawler "{53f57a68-a73e-4b31-ba0c-97cf722602ae}" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "{53f57a68-a73e-4b31-ba0c-97cf722602ae}"; }; # Video Speed Controller "{7be2ba16-0f1e-4d93-9ebc-5164397477a9}" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "{7be2ba16-0f1e-4d93-9ebc-5164397477a9}"; }; # Boycat "boycat@extension.io" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "boycat@extension.io"; }; # Go European "goeuropean@example.com" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "goeuropean@example.com"; }; # Bypass Paywalls Clean "magnolia@12.34.xpi" = { installation_mode = "force_installed"; install_url = "https://gitflic.ru/project/magnolia1234/bpc_uploads/blob/?file=bypass_paywalls_clean-latest.xpi&branch=main"; }; # Sky Follower Bridge "sky-follower-bridge@ryo.kawamata" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "sky-follower-bridge@ryo.kawamata"; }; # Support Canadian "supportcanadian@example.com" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "supportcanadian@example.com"; }; # Syrup "syrup@extension" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "syrup@extension"; }; # TrackMeNot "trackmenot@mrl.nyu.edu" = { installation_mode = "force_installed"; install_url = mkMozillaAddonUrl "trackmenot@mrl.nyu.edu"; }; }; SanitizeOnShutdown = true; HttpsOnlyMode = "force_enabled"; PromptForDownloadLocation = true; DisplayBookmarksToolbar = "newtab"; RequestedLocales = "eo,en-US"; }; profiles.default = { extensions = { force = true; packages = with pkgs; [ # https://nur.nix-community.org/repos/rycee/ nur.repos.rycee.firefox-addons.adnauseam nur.repos.rycee.firefox-addons.amp2html nur.repos.rycee.firefox-addons.aria2-integration nur.repos.rycee.firefox-addons.bitwarden nur.repos.rycee.firefox-addons.blocktube nur.repos.rycee.firefox-addons.clearurls nur.repos.rycee.firefox-addons.cliget nur.repos.rycee.firefox-addons.control-panel-for-twitter nur.repos.rycee.firefox-addons.dearrow nur.repos.rycee.firefox-addons.don-t-fuck-with-paste nur.repos.rycee.firefox-addons.fediact nur.repos.rycee.firefox-addons.firefox-color nur.repos.rycee.firefox-addons.foxyproxy-standard nur.repos.rycee.firefox-addons.geminize nur.repos.rycee.firefox-addons.gesturefy nur.repos.rycee.firefox-addons.github-file-icons nur.repos.rycee.firefox-addons.github-issue-link-status nur.repos.rycee.firefox-addons.ipfs-companion nur.repos.rycee.firefox-addons.istilldontcareaboutcookies nur.repos.rycee.firefox-addons.kagi-search nur.repos.rycee.firefox-addons.leechblock-ng nur.repos.rycee.firefox-addons.localcdn nur.repos.rycee.firefox-addons.lovely-forks nur.repos.rycee.firefox-addons.notifier-for-github nur.repos.rycee.firefox-addons.octotree nur.repos.rycee.firefox-addons.old-reddit-redirect nur.repos.rycee.firefox-addons.peertubeify nur.repos.rycee.firefox-addons.private-grammar-checker-harper nur.repos.rycee.firefox-addons.protoots nur.repos.rycee.firefox-addons.reddit-enhancement-suite nur.repos.rycee.firefox-addons.shinigami-eyes nur.repos.rycee.firefox-addons.simple-translate nur.repos.rycee.firefox-addons.snowflake nur.repos.rycee.firefox-addons.sponsorblock nur.repos.rycee.firefox-addons.streetpass-for-mastodon nur.repos.rycee.firefox-addons.terms-of-service-didnt-read nur.repos.rycee.firefox-addons.translate-web-pages nur.repos.rycee.firefox-addons.tree-style-tab nur.repos.rycee.firefox-addons.twiter-x-video-downloader nur.repos.rycee.firefox-addons.ublacklist nur.repos.rycee.firefox-addons.user-agent-string-switcher nur.repos.rycee.firefox-addons.web-archives nur.repos.rycee.firefox-addons.web-scrobbler nur.repos.rycee.firefox-addons.youtube-high-definition nur.repos.rycee.firefox-addons.youtube-no-translation nur.repos.rycee.firefox-addons.youtube-shorts-block ]; }; isDefault = true; name = "Main"; settings = { "dom.securecontext.allowlist_onions" = true; "extensions.autoDisableScopes" = 0; "extensions.checkCompatibility.128.0" = false; "extensions.checkCompatibility.128.1" = false; "extensions.checkCompatibility.128.10" = false; "extensions.checkCompatibility.128.11" = false; "extensions.checkCompatibility.128.12" = false; "extensions.checkCompatibility.128.13" = false; "extensions.checkCompatibility.128.14" = false; "extensions.checkCompatibility.128.15" = false; "extensions.checkCompatibility.128.2" = false; "extensions.checkCompatibility.128.3" = false; "extensions.checkCompatibility.128.4" = false; "extensions.checkCompatibility.128.5" = false; "extensions.checkCompatibility.128.6" = false; "extensions.checkCompatibility.128.7" = false; "extensions.checkCompatibility.128.8" = false; "extensions.checkCompatibility.128.9" = false; "extensions.checkCompatibility.nightly" = false; "floorp.browser.sidebar.enable" = false; "floorp.browser.sidebar.is.displayed" = false; "floorp.browser.ssb.enabled" = true; "floorp.browser.tabs.verticaltab" = true; "floorp.tabsleep.enabled" = true; "floorp.titlebar.favicon.color" = true; "floorp.verticaltab.hover.enabled" = true; "network.dns.blockDotOnion" = false; }; bookmarks = { force = true; settings = [ { name = "DFW"; toolbar = true; bookmarks = [ { name = "DART Trip Planner"; url = "https://www.dart.org/trip/trip-planner/trip-planner-map"; } ]; } { name = "Dokumentado"; toolbar = true; bookmarks = [ { name = "Catppuccin Options"; url = "https://nix.catppuccin.com/search/rolling/"; } { name = "Firefox Policy Templates"; url = "mozilla.github.io/policy-templates"; } { name = "flake-parts treefmt-nix Documentation"; url = "flake.parts/options/treefmt-nix.html"; } { name = "flake-parts git-hook-nix Documentation"; url = "https://flake.parts/options/git-hooks-nix.html"; } { name = "GitHub - Helix"; url = "https://github.com/helix-editor/helix"; } { name = "GitHub - home-manager"; url = "https://github.com/nix-community/home-manager"; } { name = "GitHub - nixpkgs"; url = "https://github.com/NixOS/nixpkgs"; } { name = "Guix Packages"; url = "https://toys.whereis.social/"; } { name = "Harper Supported Languages"; url = "https://writewithharper.com/docs/integrations/language-server#Supported-Languages"; } { name = "Helix Commands"; url = "https://docs.helix-editor.com/commands.html"; } { name = "Helix Language Support"; url = "https://docs.helix-editor.com/lang-support.html"; } { name = "Helix Formatter Support"; url = "https://helix-editor.vercel.app/reference/formatters"; } { name = "Helix Keymap"; url = "https://docs.helix-editor.com/keymap.html"; } { name = "Helix languages.toml"; url = "https://github.com/helix-editor/helix/blob/master/languages.toml"; } { name = "Home Manager Configuration Options"; url = "https://nix-community.github.io/home-manager/options.xhtml"; } { name = "ltex-plus Supported Languages"; url = "https://ltex-plus.github.io/ltex-plus/supported-languages.html"; } { name = "Nerd Fonts Cheatsheet"; url = "https://www.nerdfonts.com/cheat-sheet"; } { name = "Nix Firefox Addons Search"; url = "https://nur.nix-community.org/repos/rycee/"; } { name = "NixOS Configuration Options"; url = "https://nixos.org/manual/nixos/unstable/options"; } { name = "NixOS Package Search"; url = "https://search.nixos.org/packages"; } { name = "Stylix Options"; url = "https://nix-community.github.io/stylix/options/modules/alacritty.html"; } { name = "Vale Supported Languages"; url = "https://vale.sh/docs/formats/code"; } ]; } { name = "Linvgo"; toolbar = true; bookmarks = [ { name = "Vikipedio"; url = "https://eo.wikipedia.org"; } { name = "Tuja Vortaro"; url = "https://www.tujavortaro.net/?lingvo=en"; } { name = "Wiktionary"; url = "https://en.wiktionary.org"; } ]; } { name = "Lokaj retejoj"; toolbar = true; bookmarks = [ { name = "CUPS"; url = "http://localhost:631/"; } { name = "Syncthing"; url = "http://localhost:8384/"; } ]; } { name = "Memgastigado"; toolbar = true; bookmarks = [ { name = "ArchiveTeam Warrior"; url = "http://docker:8001/"; } { name = "OpenRouter Chat"; url = "https://openrouter.ai/chat"; } { name = "Proxmox"; url = "https://gamingserver:8006"; } { name = "Portainer"; url = "http://docker:9000"; } { name = "Syncthing"; url = "http://docker:8384/"; } { name = "The Indie Beat"; url = "https://theindiebeat.fm/"; } { name = "TrueNAS"; url = "https://10.10.10.5:444/"; } ]; } { name = "UT Dallas"; toolbar = true; bookmarks = [ { name = "Comet Calendar"; url = "https://calendar.utdallas.edu/"; } { name = "eLearning"; url = "https://elearning.utdallas.edu/"; } { name = "UT Dallas Map"; url = "https://map.utdallas.edu/"; } ]; } ]; }; }; }; }; targets.genericLinux.enable = true; }