diff --git a/flake.lock b/flake.lock index e0998cf..a342c51 100644 --- a/flake.lock +++ b/flake.lock @@ -51,16 +51,17 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1730406489, - "narHash": "sha256-5OolxaZm+dWYHTok8GrsKA+p67zDVFItzVVKXHnMssw=", - "owner": "Kirottu", + "lastModified": 1730405189, + "narHash": "sha256-Q9TZKW4z5lmDFBK+eTrTIbKy6Ksx7OaBSPWH0+4fkfY=", + "owner": "anyrun-org", "repo": "anyrun", - "rev": "fab3e12be42bd9d18d330907655dac1a0b6a84f3", + "rev": "a808e6d801d9e216a0c077a003fba22cfc3a1990", "type": "github" }, "original": { - "owner": "Kirottu", + "owner": "anyrun-org", "repo": "anyrun", + "rev": "a808e6d801d9e216a0c077a003fba22cfc3a1990", "type": "github" } }, @@ -172,11 +173,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1730394842, - "narHash": "sha256-g2OJ2m0lhavtek1wGkn0Bj3VCnvzE3GmtLEY3SJaYoM=", + "lastModified": 1730424076, + "narHash": "sha256-C7fGtktmYk3ZQn/sFSPvRWod2DRZuZzzEmVhkaf0Qoc=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "cedccfff0d6e1fb9c62f77fb4e05169256219eca", + "rev": "a0196e4a9da85a7f06d9f79110e70d97e57cfbed", "type": "github" }, "original": { @@ -1413,11 +1414,11 @@ "nixpkgs": "nixpkgs_10" }, "locked": { - "lastModified": 1730410240, - "narHash": "sha256-PL7RGHRo0fyukX4TRKmtYb5fDA6hCL0Wg8jnSbDL0Zk=", + "lastModified": 1730425081, + "narHash": "sha256-c8JK1Zuc9QjfLfbnAEtB3uHz5pd+RMgMiR263TEtwAs=", "owner": "nix-community", "repo": "nixpkgs-wayland", - "rev": "b96564c7722abb8cfff2fae01cef9d6819fca259", + "rev": "968d7a95604a2ec252ce9912199dfa9ec6410ff0", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 665c733..3bfabcf 100644 --- a/flake.nix +++ b/flake.nix @@ -24,7 +24,7 @@ nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland"; resume.url = "git+https://git.zoeys.computer/zoey/resume"; - anyrun.url = "github:Kirottu/anyrun"; + anyrun.url = "github:anyrun-org/anyrun/a808e6d801d9e216a0c077a003fba22cfc3a1990"; anyrun.inputs.nixpkgs.follows = "nixpkgs"; ags.url = "github:Aylur/ags"; agenix.url = "github:ryantm/agenix"; diff --git a/homes/x86_64-linux/zoey@earth/default.nix b/homes/x86_64-linux/zoey@earth/default.nix index 66cc5d8..66379d4 100644 --- a/homes/x86_64-linux/zoey@earth/default.nix +++ b/homes/x86_64-linux/zoey@earth/default.nix @@ -86,6 +86,8 @@ pkgs.thunderbird + pkgs.custom.enc + pkgs.mongodb-compass pkgs.postman pkgs.mosh diff --git a/modules/home/apps/term/kitty/default.nix b/modules/home/apps/term/kitty/default.nix index afef99b..2d57c4d 100644 --- a/modules/home/apps/term/kitty/default.nix +++ b/modules/home/apps/term/kitty/default.nix @@ -12,14 +12,14 @@ in { enable = mkBoolOpt false "Enable Kitty Term"; fonts = { - normal = mkStringOpt "JetBrainsMonoNL Nerd Font Mono Bold" "Normal Font"; - bold = mkStringOpt "JetBrainsMonoNL Nerd Font Mono ExtraBold" "Bold Font"; - italic = mkStringOpt "JetBrainsMonoNL Nerd Font Mono Bold Italic" "Italic Font"; - bold_italic = mkStringOpt "JetBrainsMonoNL Nerd Font Mono ExtraBold Italic" "Bold Italic Font"; - # normal = mkStringOpt "Iosevka Bold" "Normal Font"; - # bold = mkStringOpt "Iosevka ExtraBold" "Bold Font"; - # italic = mkStringOpt "Iosevka Bold Italic" "Italic Font"; - # bold_italic = mkStringOpt "Iosevka ExtraBold Italic" "Bold Italic Font"; + # normal = mkStringOpt "ZedMono Nerd Font Mono Bold" "Normal Font"; + # bold = mkStringOpt "ZedMono Nerd Font Mono ExtraBold" "Bold Font"; + # italic = mkStringOpt "ZedMono Nerd Font Mono Bold Italic" "Italic Font"; + # bold_italic = mkStringOpt "ZedMono Nerd Font Mono ExtraBold Italic" "Bold Italic Font"; + normal = mkStringOpt "Iosevka Bold" "Normal Font"; + bold = mkStringOpt "Iosevka ExtraBold" "Bold Font"; + italic = mkStringOpt "Iosevka Bold Italic" "Italic Font"; + bold_italic = mkStringOpt "Iosevka ExtraBold Italic" "Bold Italic Font"; }; }; diff --git a/modules/nixos/ui/fonts/default.nix b/modules/nixos/ui/fonts/default.nix index 1707554..45f1a27 100644 --- a/modules/nixos/ui/fonts/default.nix +++ b/modules/nixos/ui/fonts/default.nix @@ -40,7 +40,7 @@ in { exportGlyphNames = true [buildPlans.IosevkaCustom.variants] - inherits = "ss01" + inherits = "ss14" ''; }) noto-fonts diff --git a/packages/enc/default.nix b/packages/enc/default.nix new file mode 100644 index 0000000..21cc895 --- /dev/null +++ b/packages/enc/default.nix @@ -0,0 +1,58 @@ +{ + writeShellScriptBin, + gnupg, + neovim, + coreutils, + wl-clipboard, + xclip, +}: +writeShellScriptBin "enc" '' + #!${coreutils}/bin/env zsh + + # Check if recipients were provided + if [[ $# -eq 0 ]]; then + echo "Usage: $0 recipient1@example.com [recipient2@example.com ...]" + exit 1 + fi + + # Create a temporary file + temp_file=$(${coreutils}/bin/mktemp) + trap "${coreutils}/bin/rm -f $temp_file" EXIT + + # Create recipient arguments for gpg + recipients=() + for recipient in "$@"; do + recipients+=("-r" "$recipient") + done + + # Open neovim with the temp file + ${neovim}/bin/nvim \ + -c "set noswapfile" \ + -c "set filetype=" \ + "$temp_file" + + # Check if the temp file has content after nvim closes + if [[ -s "$temp_file" ]]; then + # Encrypt the content with gpg and copy to clipboard + if [[ -n "$WAYLAND_DISPLAY" ]]; then + ${gnupg}/bin/gpg --encrypt \ + --armor \ + --trust-model always \ + "''${recipients[@]}" \ + "$temp_file" | ${wl-clipboard}/bin/wl-copy + echo "Encrypted content copied to Wayland clipboard" + elif [[ -n "$DISPLAY" ]]; then + ${gnupg}/bin/gpg --encrypt \ + --armor \ + --trust-model always \ + "''${recipients[@]}" \ + "$temp_file" | ${xclip}/bin/xclip -selection clipboard + echo "Encrypted content copied to X11 clipboard" + else + echo "No display detected, cannot copy to clipboard" + exit 1 + fi + else + echo "No content was saved, exiting." + fi +'' diff --git a/packages/zen-browser-unwrapped/default.nix b/packages/zen-browser-unwrapped/default.nix index 96b75af..4a8063b 100644 --- a/packages/zen-browser-unwrapped/default.nix +++ b/packages/zen-browser-unwrapped/default.nix @@ -1,3 +1,20 @@ +# pname = "zen-browser-unwrapped"; +# version = "715b6df2fb8171336adc8712668a5e8458f7749b"; +# +# src = fetchFromGitHub { +# owner = "zen-browser"; +# repo = "desktop"; +# rev = "${version}"; +# leaveDotGit = true; +# fetchSubmodules = true; +# hash = "sha256-0+x2XoZyMdzP1beJvUSeM/QnFyQ+FSuGIatHh1mtBaw="; +# }; +# +# firefoxVersion = (lib.importJSON "${src}/surfer.json").version.version; +# firefoxSrc = fetchurl { +# url = "mirror://mozilla/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.xz"; +# hash = "sha256-XAMbVywdpyZnfi/5e2rVp+OyM4em/DljORy1YvgKXkg="; +# }; { buildNpmPackage, buildPackages, @@ -100,13 +117,13 @@ }: let surfer = buildNpmPackage { pname = "surfer"; - version = "1.4.21"; + version = "1.5.0"; src = fetchFromGitHub { owner = "zen-browser"; repo = "surfer"; - rev = "7f6da82ec44d210875b9a9c40b2169df0c88ff44"; - hash = "sha256-QfckIXxg5gUNvoofM39ZEiKkYV62ZJduHKVd171HQBw="; + rev = "50af7094ede6e9f0910f010c531f8447876a6464"; + hash = "sha256-wmAWg6hoICNHfoXJifYFHmyFQS6H22u3GSuRW4alexw="; }; patches = [./surfer-dont-check-update.patch]; @@ -135,9 +152,11 @@ llvmPackages.stdenv.cc.override {bintools = buildPackages.rustc.llvmPackages.bintools;} ); + inherit (pkgsCross) wasi32; + wasiSysRoot = runCommand "wasi-sysroot" {} '' mkdir -p "$out"/lib/wasm32-wasi - for lib in ${pkgsCross.wasi32.llvmPackages.libcxx}/lib/*; do + for lib in ${wasi32.llvmPackages.libcxx}/lib/*; do ln -s "$lib" "$out"/lib/wasm32-wasi done ''; @@ -145,27 +164,32 @@ firefox-l10n = fetchFromGitHub { owner = "mozilla-l10n"; repo = "firefox-l10n"; - rev = "cb528e0849a41c961f7c1ecb9e9604fc3167e03e"; - hash = "sha256-KQtSLDDPo6ffQwNs937cwccMasUJ/bnBFjY4LxrNGFg="; + rev = "9d639cd79d6b73081fadb3474dd7d73b89732e7b"; + hash = "sha256-+2JCaPp+c2BRM60xFCeY0pixIyo2a3rpTPaSt1kTfDw="; }; in - buildStdenv.mkDerivation rec { + buildStdenv.mkDerivation (finalAttrs: { pname = "zen-browser-unwrapped"; - version = "1.0.1-a.13"; + version = "1.0.1-t.17"; src = fetchFromGitHub { owner = "zen-browser"; repo = "desktop"; - rev = "${version}"; - leaveDotGit = true; + rev = "715b6df2fb8171336adc8712668a5e8458f7749b"; + hash = "sha256-0+x2XoZyMdzP1beJvUSeM/QnFyQ+FSuGIatHh1mtBaw="; fetchSubmodules = true; - hash = "sha256-z1YIdulvzkbSa266RZwBbYbeHqY22RvdHAdboR9uqig="; }; - firefoxVersion = (lib.importJSON "${src}/surfer.json").version.version; + # DO NOT UPDATE THE FIREFOX VERSION MANUALLY! + # + # Both `firefoxVersion` and `firefoxSrc` are managed by the `update.sh` script. + # The Firefox version is specified by `zen-browser` in the `surfer.json` file. + # + # We need to manually set the version here to avoid IFD. + firefoxVersion = "132.0.1"; firefoxSrc = fetchurl { - url = "mirror://mozilla/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.xz"; - hash = "sha256-en3z+Xc3RT76okPKnbr5XQ8PgzxdyK+stXBO4W7wYNA="; + url = "mirror://mozilla/firefox/releases/${finalAttrs.firefoxVersion}/source/firefox-${finalAttrs.firefoxVersion}.source.tar.xz"; + hash = "sha256-XAMbVywdpyZnfi/5e2rVp+OyM4em/DljORy1YvgKXkg="; }; SURFER_COMPAT = generic; @@ -189,7 +213,7 @@ in surfer unzip wrapGAppsHook3 - lib.custom.pkgs-unstable.xorg.xvfb + xorg.xvfb ] ++ lib.optionals crashreporterSupport [ dump_syms @@ -260,12 +284,6 @@ in libxkbcommon ]; - configureScript = writeShellScript "configureMozconfig" '' - for flag in $@; do - echo "ac_add_options $flag" >> mozconfig - done - ''; - configureFlags = [ "--disable-bootstrap" @@ -304,17 +322,49 @@ in (lib.enableFeature enableDebugSymbols "debug-symbols") ]; + configureScript = writeShellScript "configureMozconfig" '' + for flag in $@; do + echo "ac_add_options $flag" >> mozconfig + done + ''; + + # To the person reading this wondering what is going on here, this is what + # happens when a build process relies on Git. Normally you would use `fetchgit` + # with `leaveDotGit = true`, however that leads to reproducibility issues, so + # instead we create our own Git repo with a single commit. + # + # `surfer` (the build tool made for zen-browser) uses git to read the latest + # HEAD commit, `git apply`, and likely a few other operations. preConfigure = '' - export LLVM_PROFDATA=llvm-profdata - export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system - export WASM_CC=${pkgsCross.wasi32.stdenv.cc}/bin/${pkgsCross.wasi32.stdenv.cc.targetPrefix}cc - export WASM_CXX=${pkgsCross.wasi32.stdenv.cc}/bin/${pkgsCross.wasi32.stdenv.cc.targetPrefix}c++ - export ZEN_RELEASE=1 - surfer ci --brand alpha --display-version ${version} export HOME="$TMPDIR" git config --global user.email "nixbld@localhost" git config --global user.name "nixbld" - install -D ${firefoxSrc} .surfer/engine/firefox-${firefoxVersion}.source.tar.xz + + # Initialize git repo and handle submodules properly + git init + git config --global init.defaultBranch main + + # Force add all files including submodules + git add -A -f + + # Initialize and update submodules if they exist + if [ -f .gitmodules ]; then + git submodule init + git submodule update --init --recursive + fi + + # Commit all changes including submodule state + git commit -m 'nixpkgs' -a --allow-empty + + export LLVM_PROFDATA=llvm-profdata + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system + export WASM_CC=${wasi32.stdenv.cc}/bin/${wasi32.stdenv.cc.targetPrefix}cc + export WASM_CXX=${wasi32.stdenv.cc}/bin/${wasi32.stdenv.cc.targetPrefix}c++ + + export ZEN_RELEASE=1 + surfer ci --brand alpha --display-version ${finalAttrs.version} + + install -D ${finalAttrs.firefoxSrc} .surfer/engine/firefox-${finalAttrs.firefoxVersion}.source.tar.xz surfer download surfer import patchShebangs engine/mach engine/build engine/tools @@ -322,20 +372,26 @@ in preBuild = '' cp -r ${firefox-l10n} l10n/firefox-l10n + for lang in $(cat ./l10n/supported-languages); do rsync -av --progress l10n/firefox-l10n/"$lang"/ l10n/"$lang" --exclude .git done + sh scripts/copy-language-pack.sh en-US + for lang in $(cat ./l10n/supported-languages); do sh scripts/copy-language-pack.sh "$lang" done + Xvfb :2 -screen 0 1024x768x24 & export DISPLAY=:2 ''; buildPhase = '' runHook preBuild + surfer build + runHook postBuild ''; @@ -348,15 +404,22 @@ in description = "Firefox based browser with a focus on privacy and customization"; homepage = "https://www.zen-browser.app/"; license = lib.licenses.mpl20; - maintainers = with lib.maintainers; [matthewpi]; - platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ + matthewpi + titaniumtown + ]; + platforms = ["x86_64-linux"]; }; enableParallelBuilding = true; requiredSystemFeatures = ["big-parallel"]; passthru = { - binaryName = meta.mainProgram; + updateScript = ./update.sh; + + # These values are used by `wrapFirefox`. + # ref; `pkgs/applications/networking/browsers/firefox/wrapper.nix' + binaryName = finalAttrs.meta.mainProgram; inherit alsaSupport; inherit jackSupport; inherit pipewireSupport; @@ -367,4 +430,4 @@ in inherit gtk3; inherit wasiSysRoot; }; - } + })