diff --git a/nixos/common/desktop/home.nix b/nixos/common/desktop/home.nix index 7032f2d1..5c9e83d4 100644 --- a/nixos/common/desktop/home.nix +++ b/nixos/common/desktop/home.nix @@ -21,7 +21,9 @@ in { helix inputs.attic.packages.${pkgs.system}.attic inputs.comma.packages.${pkgs.system}.default - inputs.webcord.packages.${pkgs.system}.default + # inputs.webcord.packages.${pkgs.system}.default + discord + dogdns jetbrains.clion jetbrains.rust-rover kdenlive diff --git a/nixos/pkgs/glitch-soc/README.md b/nixos/pkgs/glitch-soc/README.md new file mode 100644 index 00000000..8e2dca9b --- /dev/null +++ b/nixos/pkgs/glitch-soc/README.md @@ -0,0 +1,15 @@ +# Mastodon Glitch Edition + +Mostly copied from [nixpkgs upstream](https://github.com/NixOS/nixpkgs/tree/master/pkgs/servers/mastodon). + +Modifications for the new yarn berry lockfiles in `default.nix`, `yarn.nix` and `yarn-typescript.patch` stolen (with permissions) from [catgirl.cloud](https://git.catgirl.cloud/999eagle/dotfiles-nix/-/tree/main/overlay/mastodon/glitch). + +See also: https://github.com/NixOS/nixpkgs/issues/277697 + +Update: + +``` +./update.sh --owner glitch-soc --repo mastodon --patches "./yarn-typescript.patch" --rev $COMMIT +``` + +The yarn hash isn't updated automatically due to the lockfile thing, run a build and copy the hash from the error message to source.nix by hand. diff --git a/nixos/pkgs/glitch-soc/default.nix b/nixos/pkgs/glitch-soc/default.nix index dcd2a6dc..9b083903 100644 --- a/nixos/pkgs/glitch-soc/default.nix +++ b/nixos/pkgs/glitch-soc/default.nix @@ -1,6 +1,15 @@ +/* +Copied from nixpkgs upstream: +https://github.com/NixOS/nixpkgs/blob/nixos-23.11/pkgs/servers/mastodon/default.nix + +Modifications for new yarn lockfiles stolen (with permission) from: +https://git.catgirl.cloud/999eagle/dotfiles-nix/-/blob/main/overlay/mastodon/glitch/yarn.nix +*/ + { lib, stdenv, nodejs-slim, bundlerEnv, nixosTests , yarn, callPackage, ruby, writeShellScript , fetchYarnDeps, prefetch-yarn-deps +, yarn-berry, callPackage, imagemagick, ffmpeg, file, ruby, writeShellScript , brotli # Allow building a fork or custom version of Mastodon: @@ -28,12 +37,13 @@ stdenv.mkDerivation rec { pname = "${pname}-modules"; inherit src version; - yarnOfflineCache = fetchYarnDeps { - yarnLock = "${src}/yarn.lock"; + # use the fixed yarn berry offline cache thingy + yarnOfflineCache = callPackage ./yarn.nix { + inherit src; hash = yarnHash; }; - nativeBuildInputs = [ prefetch-yarn-deps nodejs-slim yarn mastodonGems mastodonGems.wrappedRuby brotli ]; + nativeBuildInputs = [ nodejs-slim yarn-berry mastodonGems mastodonGems.wrappedRuby brotli ]; RAILS_ENV = "production"; NODE_ENV = "production"; @@ -45,9 +55,12 @@ stdenv.mkDerivation rec { # This option is needed for openssl-3 compatibility # Otherwise we encounter this upstream issue: https://github.com/mastodon/mastodon/issues/17924 export NODE_OPTIONS=--openssl-legacy-provider - fixup-yarn-lock ~/yarn.lock - yarn config --offline set yarn-offline-mirror $yarnOfflineCache - yarn install --offline --frozen-lockfile --ignore-engines --ignore-scripts --no-progress + + export YARN_ENABLE_TELEMETRY=0 + mkdir -p ~/.yarn/berry + ln -sf $yarnOfflineCache ~/.yarn/berry/cache + + yarn install --immutable --immutable-cache patchShebangs ~/bin patchShebangs ~/node_modules @@ -57,7 +70,7 @@ stdenv.mkDerivation rec { OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder \ rails assets:precompile - yarn cache clean --offline + yarn cache clean rm -rf ~/node_modules/.cache # Create missing static gzip and brotli files diff --git a/nixos/pkgs/glitch-soc/source.nix b/nixos/pkgs/glitch-soc/source.nix index fea99127..53f3ee39 100644 --- a/nixos/pkgs/glitch-soc/source.nix +++ b/nixos/pkgs/glitch-soc/source.nix @@ -1,13 +1,19 @@ # This file was generated by pkgs.mastodon.updateScript. { fetchFromGitHub, applyPatches, patches ? [] }: let +<<<<<<< HEAD version = "bc39b3196db8c79719c5a6c920c780284b8266a"; +======= + version = "5bc39b3"; + revision = "5bc39b3196db8c79719c5a6c920c780284b8266a"; +>>>>>>> 8ec4a162da27435bf9deb68fa41bbfaf0c7d3f49 in ( applyPatches { src = fetchFromGitHub { owner = "glitch-soc"; repo = "mastodon"; +<<<<<<< HEAD rev = "v${version}"; hash = "sha256-6ipYkF0PP3D15PD7vyN1cGqnxoBRrXEaRsrto7ZXej0="; }; @@ -15,4 +21,13 @@ in }) // { inherit version; yarnHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; +======= + rev = "${revision}"; + hash = "sha256-6ipYkF0PP3D15PD7vyN1cGqnxoBRrXEaRsrto7ZXej0="; + }; + patches = patches ++ [./yarn-typescript.patch]; + }) // { + inherit version; + yarnHash = "sha256-CIIz5wwWzvDKc/VbSIT7Z5D9kwOLoErXoO0WQWfV/g4="; +>>>>>>> 8ec4a162da27435bf9deb68fa41bbfaf0c7d3f49 } diff --git a/nixos/pkgs/glitch-soc/update.sh b/nixos/pkgs/glitch-soc/update.sh index 8e835043..56664664 100755 --- a/nixos/pkgs/glitch-soc/update.sh +++ b/nixos/pkgs/glitch-soc/update.sh @@ -1,5 +1,4 @@ -#!/usr/bin/env nix-shell -#! nix-shell -i bash -p bundix coreutils diffutils nix-prefetch-github gnused jq prefetch-yarn-deps +#!/usr/bin/env -S nix shell nixpkgs#bundix nixpkgs#coreutils nixpkgs#diffutils nixpkgs#nix-prefetch-git nixpkgs#nix-prefetch-github nixpkgs#gnused nixpkgs#jq nixpkgs#prefetch-yarn-deps -c bash set -e OWNER=mastodon @@ -51,11 +50,7 @@ if [[ -n "$POSITIONAL" ]]; then exit 1 fi -if [[ -z "$REVISION" ]]; then - REVISION="$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/$OWNER/$REPO/releases" | jq -r 'map(select(.prerelease == false)) | .[0].tag_name')" -fi - -VERSION="$(echo "$REVISION" | cut -c2-)" +VERSION="${REVISION:0:7}" rm -f gemset.nix source.nix cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1 @@ -85,13 +80,14 @@ cat > source.nix << EOF { fetchFromGitHub, applyPatches, patches ? [] }: let version = "$VERSION"; + revision = "$REVISION"; in ( applyPatches { src = fetchFromGitHub { owner = "$OWNER"; repo = "$REPO"; - rev = "v\${version}"; + rev = "\${revision}"; hash = "$HASH"; }; patches = patches ++ [$PATCHES]; @@ -106,7 +102,7 @@ echo "Creating gemset.nix" bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile" echo "" >> gemset.nix # Create trailing newline to please EditorConfig checks -echo "Creating yarn-hash.nix" -YARN_HASH="$(prefetch-yarn-deps "$SOURCE_DIR/yarn.lock")" -YARN_HASH="$(nix hash to-sri --type sha256 "$YARN_HASH")" -sed -i "s/sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=/$YARN_HASH/g" source.nix +# echo "Creating yarn-hash.nix" +# YARN_HASH="$(prefetch-yarn-deps "$SOURCE_DIR/yarn.lock")" +# YARN_HASH="$(nix hash to-sri --type sha256 "$YARN_HASH")" +# sed -i "s/sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=/$YARN_HASH/g" source.nix diff --git a/nixos/pkgs/glitch-soc/yarn-typescript.patch b/nixos/pkgs/glitch-soc/yarn-typescript.patch new file mode 100644 index 00000000..e0f90bf6 --- /dev/null +++ b/nixos/pkgs/glitch-soc/yarn-typescript.patch @@ -0,0 +1,15 @@ +--- a/yarn.lock ++++ b/yarn.lock +@@ -16483,11 +16483,11 @@ + + "typescript@patch:typescript@npm%3A5#optional!builtin, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin": + version: 5.3.3 +- resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" ++ resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=29ae49" + bin: + tsc: bin/tsc + tsserver: bin/tsserver +- checksum: 1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 ++ checksum: e22df47df9b2b2f2617b8bf511a29aea3d177f9f7a0756818230a76b01cbd7da988bf55f9463aaa1a4c1ff90b80f8dc5676460d4e9dfc010572cbba59b822b0c + languageName: node + linkType: hard diff --git a/nixos/pkgs/glitch-soc/yarn.nix b/nixos/pkgs/glitch-soc/yarn.nix new file mode 100644 index 00000000..c459e77c --- /dev/null +++ b/nixos/pkgs/glitch-soc/yarn.nix @@ -0,0 +1,40 @@ +/* +Stolen (with permission) from: +https://git.catgirl.cloud/999eagle/dotfiles-nix/-/blob/main/overlay/mastodon/glitch/yarn.nix +*/ + +{ + stdenvNoCC, + yarn-berry, + cacert, + src, + hash, +}: +stdenvNoCC.mkDerivation { + name = "yarn-deps"; + nativeBuildInputs = [yarn-berry cacert]; + inherit src; + + dontInstall = true; + + NODE_EXTRA_CA_CERTS = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + + buildPhase = '' + mkdir -p $out + + export HOME=$(mktemp -d) + echo $HOME + + export YARN_ENABLE_TELEMETRY=0 + export YARN_COMPRESSION_LEVEL=0 + + cache="$(yarn config get cacheFolder)" + yarn install --immutable --mode skip-build + + cp -r $cache/* $out/ + ''; + + outputHashAlgo = "sha256"; + outputHash = hash; + outputHashMode = "recursive"; +}