me like nix
0

Configure Feed

Select the types of activity you want to include in your feed.

1{ inputs, ... }: { 2 flake.modules.nixos.mira-extras = 3 { pkgs, config, lib, ... }: 4 let 5 bambu-studio = 6 let 7 pname = "bambu-studio"; 8 version = "02.05.02.51"; 9 10 src = pkgs.fetchurl { 11 url = "https://github.com/bambulab/BambuStudio/releases/download/v${version}/BambuStudio_ubuntu-24.04_v${version}-20260327222803.AppImage"; 12 hash = "sha256-tWda80M3cV5hztEoYkZVGabQMgg6pyc/OniPJfghN0Q="; 13 }; 14 15 appimage-contents = pkgs.appimageTools.extractType2 { 16 inherit src pname version; 17 }; 18 19 wrapped = pkgs.appimageTools.wrapType2 { 20 inherit src pname version; 21 22 profile = '' 23 export SSL_CERT_FILE="${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" 24 export GIO_MODULE_DIR="${pkgs.glib-networking}/lib/gio/modules/" 25 export __GLX_VENDOR_LIBRARY_NAME=nvidia 26 ''; 27 28 extraPkgs = 29 p: with p; [ 30 cacert 31 glib 32 glib-networking 33 gst_all_1.gst-plugins-bad 34 gst_all_1.gst-plugins-base 35 gst_all_1.gst-plugins-good 36 webkitgtk_4_1 37 ]; 38 }; 39 in 40 pkgs.runCommand "bambu-studio-${version}" { } '' 41 mkdir -p $out/bin 42 ln -s ${wrapped}/bin/${pname} $out/bin/bambu-studio 43 ln -s ${wrapped}/bin/${pname} $out/bin/BambuStudio 44 45 mkdir -p $out/share/applications 46 substitute ${appimage-contents}/BambuStudio.desktop $out/share/applications/BambuStudio.desktop \ 47 --replace-fail "Exec=AppRun" "Exec=$out/bin/BambuStudio" 48 49 if [ -d ${appimage-contents}/usr/share/icons ]; then 50 cp -r ${appimage-contents}/usr/share/icons $out/share/ 51 fi 52 ''; 53 in 54 { 55 networking.hostName = "mira"; 56 57 # Enable QEMU emulation for aarch64 (for building Pi images) 58 boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; 59 60 # Prevent NetworkManager from managing USB Ethernet 61 networking.networkmanager.unmanaged = [ "interface-name:enp0s20f0u4u3" ]; 62 63 # Avahi (mDNS discovery) 64 services.avahi = { 65 enable = true; 66 nssmdns4 = true; 67 openFirewall = true; 68 }; 69 70 services.copyparty.enable = true; 71 72 # SSH 73 services.openssh = { 74 enable = true; 75 settings = { 76 PasswordAuthentication = false; 77 KbdInteractiveAuthentication = false; 78 PermitRootLogin = "no"; 79 AllowUsers = [ "sean" ]; 80 }; 81 }; 82 83 # trmnl-rs server 84 systemd.services.trmnl-rs = { 85 description = "TRMNL Server"; 86 wantedBy = [ "multi-user.target" ]; 87 wants = [ "network-online.target" ]; 88 after = [ 89 "network-online.target" 90 "nss-lookup.target" 91 ]; 92 serviceConfig = { 93 ExecStart = "${inputs.trmnl-rs.packages.x86_64-linux.default}/bin/server"; 94 Restart = "on-failure"; 95 RestartSec = 5; 96 DynamicUser = true; 97 StateDirectory = "trmnl-rs"; 98 WorkingDirectory = "/var/lib/trmnl-rs"; 99 }; 100 }; 101 102 environment.systemPackages = [ 103 pkgs.lm_sensors 104 bambu-studio 105 ]; 106 107 # Firewall 108 networking.firewall.allowedTCPPorts = [ 109 8096 # jellyfin 110 5055 # jellyseer 111 3000 # vite dev port 112 3001 113 1883 # MQTT for Tasmota devices 114 2300 # trmnl 115 5000 # Frigate web UI 116 8971 # Frigate API 117 config.services.home-assistant.config.http.server_port 118 ]; 119 networking.firewall.allowedUDPPorts = [ ]; 120 121 system.stateVersion = "25.05"; 122 }; 123}