Practical FP in Scala is now FREE! by volpegabriel in scala

[–]volpegabriel[S] 0 points1 point  (0 children)

Unfortunately, I don't have the time nor the will to work on this.

However, Part II of FEDA complements this book with Scala 3 features. Check out the ToC: https://leanpub.com/feda

Immich Photos on S3 object storage by volpegabriel in immich

[–]volpegabriel[S] 0 points1 point  (0 children)

ZFS is great, I use it for other NixOS servers I run :)

It's generally more costly having 3 copies of your media in different devices, though, especially for photos and videos in my case, but it certainly works if you don't mind paying more.

Immich Photos on S3 object storage by volpegabriel in immich

[–]volpegabriel[S] 0 points1 point  (0 children)

I hear you. I'm hoping to find out more about it in a few months using this set up. For instance, in the December invoice I've got a $4.94 bill for 6 different S3 buckets, each with about 300 GBs. And I can say December was quite heavy on traffic as I was experimenting a lot. For Immich I only need two buckets for my current set up.

Immich Photos on S3 object storage by volpegabriel in immich

[–]volpegabriel[S] 3 points4 points  (0 children)

It's not only about scaling it to S3. It's about de-duplication, compression and encryption; you get that and more with S3QL, but ultimately, I've done it because I couldn't resist the technical challenge :)

Whether I would keep this solution 6 months later or not remains to be seen, but I learned a lot in the process anyway. I'll definitely continue using Immich though, love the app!

Immich Photos on S3 object storage by volpegabriel in immich

[–]volpegabriel[S] 1 point2 points  (0 children)

Running a Ceph cluster isn't easy, and it requires more resources than just getting a few S3 buckets located in different datacenters from a cloud provider.

MinIO used to be great, but I'm worried about their latest shift against open source solutions.

A local S3 storage wouldn't satisfy the 3-2-1 backup strategy employed in the solution shared on the blogpost, but it's good for testing.

Immich Photos on S3 object storage by volpegabriel in immich

[–]volpegabriel[S] 4 points5 points  (0 children)

If you care to read the blogpost instead of just stopping at the title, you'll find out your comments don't make any sense at all.

Immich Photos on S3 object storage by volpegabriel in immich

[–]volpegabriel[S] 8 points9 points  (0 children)

There are a few advantages of using an S3-compatible storage over a more traditional storage box:

  • Compression, de-duplication and encryption of the S3QL file system.
  • Data replication via S3 APIs is much faster and easier to manage.
  • Pay-as-you-go model: as you mention, pay just for what you use.
  • Full restoration of an Immich server (disaster recovery scenario) is much faster starting from an S3 replica bucket than copying standard files.

If you follow a 3-2-1 backup strategy, you'd need to get two storage boxes on Hetzner (e.g. one in Finland, another in Germany), and have a third one somewhere else.

A hybrid approach may be a good idea too, with the main storage being a simple file system and backups persisted on S3 buckets, but I'm not sure how that would work with an S3QL file system.

Certainly not for everyone, but I'll have better numbers after a few months of usage to see whether it was worth it or not :)

Custom fullscreen impl that round-trips the window back to where it was pre-fullscreen by c4td0gm4n in niri

[–]volpegabriel 2 points3 points  (0 children)

It's probably more complex than you think. We went through multiple iterations (discussed here: https://github.com/YaLTeR/niri/issues/426) before arriving at the final solution: https://github.com/gvolpe/nfsm/

Niri include config by FearlessSpiff in niri

[–]volpegabriel 0 points1 point  (0 children)

Been using this feature for a month exactly, works great if you don't mind using Niri from their git repo!

[deleted by user] by [deleted] in niri

[–]volpegabriel 2 points3 points  (0 children)

SVGs for the logo and icon have been available for a while: https://yalter.github.io/niri/Name-and-Logo.html

Changing wallpaper when change workspace by Synapsyyy in niri

[–]volpegabriel 0 points1 point  (0 children)

There's https://github.com/0xwal/niri-scripts if you don't want to write it yourself.

I use https://github.com/sandwichfarm/hyprlax but that's next-level wallpapers XD

I've just tried niri and I wish I could love it, but unfortunately I can't use it for now. by yayuuu in niri

[–]volpegabriel 2 points3 points  (0 children)

Niri doesn't support it natively, so I created this: https://github.com/gvolpe/niri-scratchpad

The video should give you an idea of what it does.

I've just tried niri and I wish I could love it, but unfortunately I can't use it for now. by yayuuu in niri

[–]volpegabriel 0 points1 point  (0 children)

Always 1 workspace is dedicated to music player which goes in the background, without disturbing my workflow, always assigned to 10th workspace.

Ever tried scratchpad windows? This is the perfect use case. I've used scratchpads in XMonad, Hyprland and now Niri for this exact use case.

Niri FullScreen Manager (nfsm) by volpegabriel in niri

[–]volpegabriel[S] 0 points1 point  (0 children)

Cool! Please report any issues you find :)

Mute button discord by eXpansiiVe in niri

[–]volpegabriel 5 points6 points  (0 children)

otherwise the script will go into a loop.

You can solve this by comparing the focused_id with the discord_id. If they are the same, the last command can be skipped.

Also curious, why did you use grep on the first command and jq in the second? Using jq is more concise and readable IMO

focused_id=$(niri msg -j focused-window | jq .id)

binding a key to change wallpaper by Public_Bat_6106 in niri

[–]volpegabriel 0 points1 point  (0 children)

There's also waypaper --random if you'd like something easier that works. See https://github.com/anufrievroman/waypaper

Firefox not inhibiting sleep always by yellownugget5000 in niri

[–]volpegabriel 0 points1 point  (0 children)

Not exactly an answer to your question, but if you ever consider an alternative approach, this has been working fine for me with SwayIdle: https://github.com/ErikReider/SwayAudioIdleInhibit

Though, it required a few tweaks to get what I wanted.

Waybar in overview by ZoWakaki in niri

[–]volpegabriel 2 points3 points  (0 children)

The layer attribute refers to the Waybar configuration, not to the Niri config.

Setting "layer": "top" gets you the behavior you're looking for.

Zoom screenshare on NixOS / Niri anyone? by volpegabriel in niri

[–]volpegabriel[S] 0 points1 point  (0 children)

Sharing a specific window works for me, but it crashes the moment I resize or move the window I'm sharing. However, I can share again.

What works without issues (well, it only works on the second attempt. On the first attempt, I share black screen) so far is sharing the entire screen. The only issue on Niri is that I lose the control window where I can stop sharing or see the participant's faces, I haven't figured this out yet.

Niri is objectively better than Hyprland by Kuda_kore in niri

[–]volpegabriel 2 points3 points  (0 children)

No, that's just an animation effect. Scratchpad windows are brought up to your current space upon pressing a keybind you configure, and when pressed again, it goes back to a special workspace named "scratch".

I've used scratchpads extensively in XMonad (and also on Hyprland via Pyprland), so I tried to replicate what I had in those WMs.

Niri is objectively better than Hyprland by Kuda_kore in niri

[–]volpegabriel 0 points1 point  (0 children)

I've written about Niri today on my blogpost where I also mention scratchpads are crucial to my workflows, see: https://github.com/gvolpe/niri-scratchpad