diff --git a/flake.lock b/flake.lock index f17717d..10a5353 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1781365335, - "narHash": "sha256-zqDBhXMzfbdlO7F2bGHe7MOtB3xngd/+4ieMHDC+ZXo=", + "lastModified": 1782159472, + "narHash": "sha256-S+/v+BWz9c8IbGhRM8L4UUVC5j2oZuAHj1b5XlkBjyw=", "owner": "nix-community", "repo": "home-manager", - "rev": "5b6f5733726a1b2ccafb5dec6ac4ca7299fad66c", + "rev": "351959fcdbe5cadec1c3434d7abd14dff31af2d5", "type": "github" }, "original": { @@ -43,11 +43,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1781074563, - "narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=", + "lastModified": 1781577229, + "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca", + "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", "type": "github" }, "original": { @@ -66,11 +66,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1781388258, - "narHash": "sha256-Kx1zxra9sZ215H3OiWUfkulu8N2v3iu19wqlzpD/Ac0=", + "lastModified": 1782160744, + "narHash": "sha256-cHC0CeygNx5y07oTyNo6Gkc0k3fD964MRvwQerlImPY=", "owner": "nix-community", "repo": "nixvim", - "rev": "e3c908fdf6dff268b04ffb6758bcfc7c018489b9", + "rev": "f60bf47332d1564a175ad4b517a83ff0c288f2e7", "type": "github" }, "original": { @@ -86,11 +86,11 @@ ] }, "locked": { - "lastModified": 1781443008, - "narHash": "sha256-ZycdrXdxhHYtw9FV10T6A+Tj1Hkq3WKtWnxQ317uXC8=", + "lastModified": 1782159196, + "narHash": "sha256-+2SNFxlnmetcPCIfai0gv89mgnXFQr3kMwLDKUyn0ZE=", "owner": "noctalia-dev", "repo": "noctalia-shell", - "rev": "2b82e4a2719b8bb0cd2da9716ed30302e9299ed6", + "rev": "a5a5ea605ac68599d29669030d39173f1e1a0c17", "type": "github" }, "original": { diff --git a/hosts/argon/configuration.nix b/hosts/argon/configuration.nix index dbfe7b6..69e2064 100644 --- a/hosts/argon/configuration.nix +++ b/hosts/argon/configuration.nix @@ -2,11 +2,12 @@ { imports = [ + ../../modules/nixos/astro.nix ../../modules/nixos/audio.nix ../../modules/nixos/bootloader.nix ../../modules/nixos/calibre.nix - ../../modules/nixos/claudecode.nix ../../modules/nixos/certificates.nix + ../../modules/nixos/claudecode.nix ../../modules/nixos/drives.nix ../../modules/nixos/gnupg.nix ../../modules/nixos/gnuradio.nix @@ -21,9 +22,8 @@ ../../modules/nixos/protonvpn.nix ../../modules/nixos/services.nix ../../modules/nixos/settings.nix - ../../modules/nixos/stellarium.nix - ../../modules/nixos/thunar.nix ../../modules/nixos/steam.nix + ../../modules/nixos/thunar.nix ../../modules/nixos/users.nix ]; diff --git a/hosts/neon/configuration.nix b/hosts/neon/configuration.nix index bfbe292..472ac6f 100644 --- a/hosts/neon/configuration.nix +++ b/hosts/neon/configuration.nix @@ -2,9 +2,11 @@ { imports = [ + ../../modules/nixos/astro.nix ../../modules/nixos/audio.nix ../../modules/nixos/bootloader.nix ../../modules/nixos/certificates.nix + ../../modules/nixos/claudecode.nix ../../modules/nixos/docker.nix ../../modules/nixos/gnupg.nix ../../modules/nixos/locales.nix @@ -17,7 +19,6 @@ ../../modules/nixos/sddm.nix ../../modules/nixos/services.nix ../../modules/nixos/settings.nix - ../../modules/nixos/stellarium.nix ../../modules/nixos/steam.nix ../../modules/nixos/users.nix ]; diff --git a/modules/nixos/astro.nix b/modules/nixos/astro.nix new file mode 100644 index 0000000..e8218e0 --- /dev/null +++ b/modules/nixos/astro.nix @@ -0,0 +1,78 @@ +{ config, lib, pkgs, ... }: + +let + # Siril's Python plugins (sirilpy) run in a venv that pip-installs foreign + # manylinux wheels (numpy, GraXpert deps, ...). Those .so files need + # libstdc++ at runtime. nix-ld does NOT cover this: it only handles the + # initial exec of a foreign binary, but here a *native* nixpkgs python + # dlopen()s the foreign wheel. So we put the libs on LD_LIBRARY_PATH, which + # the python subprocess inherits from the Siril process. + sirilWithPlugins = pkgs.symlinkJoin { + name = "siril-with-plugins"; + paths = [ pkgs.siril ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; + # Siril bootstraps its sirilpy venv at first run by locating a `python3` + # on PATH. nixpkgs only *propagates* python3 from the siril derivation (it + # isn't on the runtime PATH), so without the --prefix PATH below the GUI + # fails with "Python not found in system PATH" and never creates + # ~/.local/share/siril/venv. We add the same interpreter siril references. + # + # The VeraLux PyQt6 wheel ships only the built-in Windows/Fusion styles, so + # the global QT_STYLE_OVERRIDE=adwaita-dark (inherited from the session) is + # rejected ("invalid style override") and windows fall back to a light + # theme. We expose nixpkgs adwaita-qt6's style plugin on QT_PLUGIN_PATH so + # the override resolves. This works because nixpkgs qt6 and the bundled Qt + # share a major.minor (6.11); if they ever drift the plugin is simply + # ignored again (harmless warning + Fusion fallback, no loss of function). + postBuild = '' + wrapProgram $out/bin/siril \ + --prefix PATH : ${lib.makeBinPath [ pkgs.python3 ]} \ + --prefix QT_PLUGIN_PATH : ${pkgs.adwaita-qt6}/lib/qt-6/plugins \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath (with pkgs; [ + stdenv.cc.cc.lib # libstdc++ / libgcc_s / libgomp (numpy etc.) + zlib + zstd # libzstd.so.1 (PyQt6) + libGL # libGL.so.1 (PyQt6) + # PyQt6 (VeraLux) — Qt bundles xcb support so it needs these even + # on Wayland; libxkbcommon is the keymap lib used by Wayland too. + glib + fontconfig + freetype + dbus + libxkbcommon + # Qt platform plugins: the wayland plugin (libqwayland.so) needs the + # wayland client libs; the xcb fallback needs libxcb-cursor.so.0. + wayland # libwayland-client/cursor/egl (wayland plugin) + libxcb-cursor # libxcb-cursor.so.0 (xcb plugin) + libx11 + libxcb + libxcb-util + libxcb-wm + libxcb-image + libxcb-keysyms + libxcb-render-util + ])} + ''; + }; +in +{ + # install stellarium for target finding and siril for stacking + environment.systemPackages = with pkgs; [ + stellarium + sirilWithPlugins + ]; + + # StarNet++ has no nixpkgs package. Download the StarNet v2 ORT CLI build + # (starnet2_linux_*_ORT_x64_cli) from https://www.starnetastro.com/download/ + # and unzip it to ~/.local/share/siril/starnet/. Then in Siril set + # Preferences -> Miscellaneous -> StarNet executable + # to the extracted ./starnet2 binary. + # + # The binary is a generic dynamically-linked ELF, so NixOS needs nix-ld to + # run it. Its own opencv/onnxruntime libs are found via the bundled ./lib. + programs.nix-ld.enable = true; + programs.nix-ld.libraries = with pkgs; [ + stdenv.cc.cc.lib # libstdc++ / libgcc_s + zlib + ]; +} diff --git a/modules/nixos/stellarium.nix b/modules/nixos/stellarium.nix deleted file mode 100644 index 2b7bdf3..0000000 --- a/modules/nixos/stellarium.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - # install stellarium for stargazing and sky simulation - environment.systemPackages = with pkgs; [ - stellarium - ]; -}