I'd recommend just installing the Flatpak. If you want to have it in your Nix configuration you can use nix-flatpak.
I'd also recommend looking into other options like Moonlight and Sunshine, they have better performance in my experience.
I'd recommend just installing the Flatpak. If you want to have it in your Nix configuration you can use nix-flatpak.
I'd also recommend looking into other options like Moonlight and Sunshine, they have better performance in my experience.
I imagine they want to install to install it on a low power device, where it wouldn't make sense to install the full steam client.
I am also new to Nix and haven't tried this yet myself, so please excuse me if this is wrong. Looks like you just have to set
programs.steam.remotePlay.openFirewall = true;
in your configuration.nix or flake or wherever you're enabling Steam.
It's in the first code block on this wiki page. https://nixos.wiki/wiki/Steam
I've never used Steam Link, but at a glance I'm feeling a bit confused about your use case. It's a remote play client for mobile devices, isn't it?
On NixOS you can just install Steam, which has remote play built in.
It understands \n if I recall correctly. You can also write regular bash, use templating tools, etc. Just use the nativeBuildInputs parameter if you need a binary that isn't provided by stdenv.
Thanks!
What if I want to append an argument which doesnt already exist? does this also allow to modify multiple lines?
Another alternative approach would be to add a duplicate desktop file, but to write it declaratively using Home Manager:
# in home.nix
home.file.".local/share/applications/firefox.desktop".source =
pkgs.runCommand "firefox-desktop" { } ''
cp "${pkgs.firefox}/share/applications/firefox.desktop" "$out"
substituteInPlace "$out" \
--replace-fail "Terminal=false" "Terminal=true"
'';
# - or -
home.file.".local/share/applications/firefox.desktop".text = ''
[Desktop Entry]
Name=Firefox
Icon=firefox
Exec=firefox --name firefox %U
'';
It would be possible to DIY this with user activation scripts, but I don't really see a value in doing that over the symlinkJoin.
Since the desktop files come directly from a package you'll need to change the package you're installing. This works best if you use the postPatch phase of symlinkJoin:
pkgs.symlinkJoin {
inherit (pkgs.firefox) pname version;
paths = [ pkgs.firefox ];
postPatch = ''
# String replacement example - will run the app in a terminal
substituteInPlace "$out/share/applications/firefox.desktop" \
--replace-fail "Terminal=false" "Terminal=true"
'';
}
The reason for using symlinkJoin here is that it creates a package with the same outputs as the original Firefox, but with this bash script having run. You can use this like any other package:
let
firefox' = <...>
in
{
environment.systemPackages = [ firefox' ];
# - or -
programs.firefox.package = firefox';
}
Note that symlinkJoin has special handling for postPatch, but ignores all other stdenv phases, so you need to do everything in one bash script. You can use all the parameters for runCommand though, such as buildInputs and nativeBuildInputs - e.g. for compiling sass in a wrapper derivation.
In some cases it's useful to also inherit meta or passthru because it's used in some nixpkgs/nixos sanity checks, but it's usually not required.
Another approach would be to use overrideAttrs, which will also work but will cause Nix to rebuild the package from scratch. This might be fine or even desired in some cases, but you probably don't want to do that in this case.
Hmm, interesting. So this is probably the case of beacondb having incorrect data for your surrounding WiFi APs. I don't know why it works on the other laptop, maybe it uses a different location database?
Well, it gets the city right at least, and that's enough for me
Just noticed that your accuarcy is at 25000 meters as well, are you getting anywhere near your actual location in map applications?
My output is slightly difference, it seems I'm not getting data from GeoIP, but from Wifi data.
$(nix-build '<nixpkgs>' -A geoclue2)/libexec/geoclue-2.0/demos/where-am-i
Client object: /org/freedesktop/GeoClue2/Client/1
New location:
Latitude: <LAT from capital>°
Longitude: <LONG from capital>°
Accuracy: 25000,000000 meters
Description: ipf fallback (from WiFi data)
Timestamp: Wed Jul 23 2025 12:51:06 (1753267866 seconds since the Epoch)
If you are just using it as your single computers config, flakes are simpler than not using flakes. And adding multiple inputs becomes easy.
The main reason flakes are confusing is because people who don't know what they are explain them wrong. See here instead https://www.youtube.com/watch?v=JCeYq72Sko0
Good idea, thanks a lot (╯✧▽✧)╯
I don't think it is the problem. The build phase also fails for me but I can't identify the error, it only prints make: *** [Makefile:146: all] Error 2 and exits. Maybe you can just take it from an older nixpkgs version where it still compiled.
Aah thanks, doesn't feel too good but needs must I guess. In other news, the build phase is now failing with:
CMake Deprecation Warning at CMakeLists.txt:21 (cmake_minimum_required): Compatibility with CMake < 3.10 will be removed from a future version of CMake.
Update the VERSION argument value. Or, use the ... syntax to tell CMake that the project requires at least but has been updated to work with policies introduced by or earlier.
Any ideas what's going on there?
I'm afraid that's just how it is. Drivers for old hardware will get deprecated and stop receiving security updates at some point.
If you are using Jellyfin just for yourself, make sure to protect it as much as feasible, and just hope for the best. It's not like any of the vulnerabilities in intel-media-sdk are remotely exploitable by themselves, and if the only way to run it is via a Jellyfin that only you can access, it's probably fine.
Hm, interesting. The other user said that geoclue tries using beacondb (I didn't know that :D).
Can you try running this: $(nix-build '<nixpkgs>' -A geoclue2)/libexec/geoclue-2.0/demos/where-am-i ? It should print out your location according to geoclue, and the source which it has used.
For me, it looks like this:
❯ $(nix-build '<nixpkgs>' -A geoclue2)/libexec/geoclue-2.0/demos/where-am-i
Client object: /org/freedesktop/GeoClue2/Client/3
New location:
Latitude: <REDACTED>?
Longitude: <REDACTED>?
Accuracy: 25000.000000 meters
Speed: 0.000000 meters/second
Description: ipf fallback (from GeoIP data)
Timestamp: Tue Jul 22 12:02:08 2025 (1753171328 seconds since the Epoch)
No gps modem but geolocation works on my other computer running fedora which also doesn't have gps.
GeoIP is the last way. Before that, geoclue will try to locate using found Wi-Fi and Cell towers via beacondb.net (via Mozilla Location Service before it shut down). If beacondb.net return fail or (0, 0), it try GeoIP at last.
Do you have some device that provides geolocation capabilities, e.g. a GPS modem, connected to your system? Because otherwise the only way to get your location is via geoip, which can be imprecise enough to place you in a different city, as you can see for yourself.
This convinced me. My new mini nas is going to run nix.
Disregard everything. I just went to copy-paste what I installed and there's no mention of lazyvim. There is a lazyvim package for nix, but I don't seem to have used it.
What were the necessary packages that you installed? And how did you install lazyvim through home-manager, to begin with?
I just added these packages to home.nix, same should be for the package above.
#neovim #git,make,npm,node,and ripgrep are already installed neovim python311 python311Packages.pip # python311Packages.pynvim luajitPackages.luarocks cargo git gh tree-sitter nerd-fonts.symbols-only emacsPackages.all-the-icons-nerd-fonts markdownlint-cli luajitPackages.jsregexp
That is incredibly interesting. You didn't have problems with treesitter failing to compile, or lsps and daps failing to run? What were the necessary packages that you installed? And how did you install lazyvim through home-manager, to begin with?
Wow I skimmed through your config and it seemed really good! This is really simple and easy to understand. I made this post because I'd wanted to keep my lazyvim configuration, but if I were to want to completely rewrite it with nix from the ground up it'd likely either be with nixvim or something like yours!