diff --git a/home/bin/executable_linux-add-nonsteam-games b/home/bin/executable_linux-add-nonsteam-games index da0e2d1f..cdbbe218 100644 --- a/home/bin/executable_linux-add-nonsteam-games +++ b/home/bin/executable_linux-add-nonsteam-games @@ -9,7 +9,6 @@ apps=( "/run/current-system/sw/bin/dolphin-emu Dolphin Emulator" "/run/current-system/sw/bin/yuzu Yuzu Emulator" "/run/current-system/sw/bin/ppsspp PPSSPP Emulator" - "/run/current-system/sw/bin/citra-qt Citra Emulator" "/run/current-system/sw/bin/retroarch Retroarch Emulator" ) diff --git a/provision/flake.lock b/provision/flake.lock index bb205773..0e10a84f 100644 --- a/provision/flake.lock +++ b/provision/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1708591310, - "narHash": "sha256-8mQGVs8JccWTnORgoLOTh9zvf6Np+x2JzhIc+LDcJ9s=", + "lastModified": 1714679908, + "narHash": "sha256-KzcXzDvDJjX34en8f3Zimm396x6idbt+cu4tWDVS2FI=", "owner": "nix-community", "repo": "home-manager", - "rev": "0e0e9669547e45ea6cca2de4044c1a384fd0fe55", + "rev": "9036fe9ef8e15a819fa76f47a8b1f287903fb848", "type": "github" }, "original": { @@ -20,21 +20,52 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1713612213, + "narHash": "sha256-zJboXgWNpNhKyNF8H/3UYzWkx7w00TOCGKi3cwi+tsw=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "cab4746180f210a3c1dd3d53e45c510e309e90e1", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, "hyprland": { "inputs": { + "hyprcursor": "hyprcursor", "hyprland-protocols": "hyprland-protocols", "hyprlang": "hyprlang", + "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs", "systems": "systems", "wlroots": "wlroots", "xdph": "xdph" }, "locked": { - "lastModified": 1708650152, - "narHash": "sha256-OZUS5FED7KKAPpNaJYQr4BPGXQzGrDFgkKVg9U2aZh8=", + "lastModified": 1714785484, + "narHash": "sha256-nuwQK+01v1o0KjlRPr+b/hsOKm4ssNCV71U9a8Yiclw=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "8c3613632a6ccebf9fb797ec756ecfce99514eec", + "rev": "40201a760acd7c5ca10f27e7d0fdeb71c20df89f", "type": "github" }, "original": { @@ -50,11 +81,11 @@ ] }, "locked": { - "lastModified": 1706198673, - "narHash": "sha256-bHlxFd+3QHy6eXtTzzhwVNcyxBSOxTvBuJGNUzI4C4M=", + "lastModified": 1713780596, + "narHash": "sha256-DDAYNGSnrBwvVfpKx+XjkuecpoE9HiEf6JW+DBQgvm0=", "owner": "hyprwm", "repo": "contrib", - "rev": "16884001b26e6955ff4b88b4dfe4c8986e20f153", + "rev": "110e6dc761d5c3d352574def3479a9c39dfc4358", "type": "github" }, "original": { @@ -93,14 +124,18 @@ "nixpkgs": [ "hyprland", "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" ] }, "locked": { - "lastModified": 1708005943, - "narHash": "sha256-9TT3xk++LI5/SPYgjYX34xZ4ebR93c1uerIq+SE/ues=", + "lastModified": 1713121246, + "narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "aeb3e012adc7b3235335c540b214b82267c2b983", + "rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706", "type": "github" }, "original": { @@ -109,36 +144,39 @@ "type": "github" } }, - "hyprlang_2": { + "hyprwayland-scanner": { "inputs": { "nixpkgs": [ "hyprland", - "xdph", "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" ] }, "locked": { - "lastModified": 1704287638, - "narHash": "sha256-TuRXJGwtK440AXQNl5eiqmQqY4LZ/9+z/R7xC0ie3iA=", + "lastModified": 1714755542, + "narHash": "sha256-D0pg+ZRwrt4lavZ97Ca8clsgbPA3duLj8iEM7riaIFY=", "owner": "hyprwm", - "repo": "hyprlang", - "rev": "6624f2bb66d4d27975766e81f77174adbe58ec97", + "repo": "hyprwayland-scanner", + "rev": "1270ebaa539e56d61b708c24b072b09cbbd3a828", "type": "github" }, "original": { "owner": "hyprwm", - "repo": "hyprlang", + "repo": "hyprwayland-scanner", "type": "github" } }, "jovian-nixos": { "flake": false, "locked": { - "lastModified": 1708585220, - "narHash": "sha256-eQ5nGEEW4I8Btwso6Q940xilYG7QNyTuocfB0awjpA8=", + "lastModified": 1714803703, + "narHash": "sha256-4m9wG6mZR0I2d7itErhpY0JqSHomNnUdoKfkjnYp+wI=", "ref": "development", - "rev": "2654de9ed084890d1814a841c4f863e9d7a44d54", - "revCount": 664, + "rev": "d0799ebebfb37fd2df6409dc8da622738c5930bb", + "revCount": 760, "type": "git", "url": "https://github.com/Jovian-Experiments/Jovian-NixOS" }, @@ -150,11 +188,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1707546158, - "narHash": "sha256-nYYJTpzfPMDxI8mzhQsYjIUX+grorqjKEU9Np6Xwy/0=", + "lastModified": 1714253743, + "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d934204a0f8d9198e1e4515dd6fec76a139c87f0", + "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", "type": "github" }, "original": { @@ -166,11 +204,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1708210246, - "narHash": "sha256-Q8L9XwrBK53fbuuIFMbjKvoV7ixfLFKLw4yV+SD28Y8=", + "lastModified": 1713638189, + "narHash": "sha256-q7APLfB6FmmSMI1Su5ihW9IwntBsk2hWNXh8XtSdSIk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "69405156cffbdf2be50153f13cbdf9a0bea38e49", + "rev": "74574c38577914733b4f7a775dd77d24245081dd", "type": "github" }, "original": { @@ -182,11 +220,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1708475490, - "narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=", + "lastModified": 1714635257, + "narHash": "sha256-4cPymbty65RvF1DWQfc+Bc8B233A1BWxJnNULJKQ1EY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0e74ca98a74bc7270d28838369593635a5db3260", + "rev": "63c3a29ca82437c87573e4c6919b09a24ea61b0f", "type": "github" }, "original": { @@ -198,11 +236,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1708151420, - "narHash": "sha256-MGT/4aGCWQPQiu6COqJdCj9kSpLPiShgbwpbC38YXC8=", + "lastModified": 1713596654, + "narHash": "sha256-LJbHQQ5aX1LVth2ST+Kkse/DRzgxlVhTL1rxthvyhZc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6e2f00c83911461438301db0dba5281197fe4b3a", + "rev": "fd16bb6d3bcca96039b11aa52038fafeb6e4f4be", "type": "github" }, "original": { @@ -228,11 +266,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1708500294, - "narHash": "sha256-mvJIecY3tDKZh7297mqOtOuAvP7U1rqjfLNfmfkjFpU=", + "lastModified": 1713892811, + "narHash": "sha256-uIGmA2xq41vVFETCF1WW4fFWFT2tqBln+aXnWrvjGRE=", "owner": "Mic92", "repo": "sops-nix", - "rev": "f6b80ab6cd25e57f297fe466ad689d8a77057c11", + "rev": "f1b0adc27265274e3b0c9b872a8f476a098679bd", "type": "github" }, "original": { @@ -259,20 +297,18 @@ "wlroots": { "flake": false, "locked": { - "host": "gitlab.freedesktop.org", - "lastModified": 1708558866, - "narHash": "sha256-Mz6hCtommq7RQfcPnxLINigO4RYSNt23HeJHC6mVmWI=", - "owner": "wlroots", - "repo": "wlroots", - "rev": "0cb091f1a2d345f37d2ee445f4ffd04f7f4ec9e5", - "type": "gitlab" + "lastModified": 1713731601, + "narHash": "sha256-bdcKdtLkusvv85DNuJsajZLFeq7bXp+x5AGP1Sd4wD8=", + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea", + "type": "github" }, "original": { - "host": "gitlab.freedesktop.org", - "owner": "wlroots", - "repo": "wlroots", - "rev": "0cb091f1a2d345f37d2ee445f4ffd04f7f4ec9e5", - "type": "gitlab" + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea", + "type": "github" } }, "xdph": { @@ -281,7 +317,10 @@ "hyprland", "hyprland-protocols" ], - "hyprlang": "hyprlang_2", + "hyprlang": [ + "hyprland", + "hyprlang" + ], "nixpkgs": [ "hyprland", "nixpkgs" @@ -292,11 +331,11 @@ ] }, "locked": { - "lastModified": 1706521509, - "narHash": "sha256-AInZ50acOJ3wzUwGzNr1TmxGTMx+8j6oSTzz4E7Vbp8=", + "lastModified": 1714060055, + "narHash": "sha256-j43TS9wv9luaAlpxcxw0sjxkbcc2mGANVR2RYgo3RCw=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "c06fd88b3da492b8f9067be021b9184f7012b5a8", + "rev": "0fe840441e43da12cd7865ed9aa8cdc35a8da85a", "type": "github" }, "original": { diff --git a/provision/hosts/bulwark/configuration.nix b/provision/hosts/bulwark/configuration.nix index b777fb38..639677a9 100644 --- a/provision/hosts/bulwark/configuration.nix +++ b/provision/hosts/bulwark/configuration.nix @@ -48,6 +48,10 @@ nerdfonts ]; + # Enable docker + virtualisation.docker.enable = true; + virtualisation.docker.storageDriver = "btrfs"; + # Define user account. users.users.${user} = { isNormalUser = true; @@ -64,14 +68,16 @@ }]; environment.systemPackages = with pkgs; [ - discord # Voice, video, and text communication platform for communities and friends. - gamemode # Optimizes Linux system performance for gaming by adjusting system settings. ]; # Enable modules modules = { desktop = { sway.enable = false; + gnome = { + enable = true; + wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}"; + }; browser.enable = true; }; devel = { diff --git a/provision/hosts/bulwark/steam-deck.nix b/provision/hosts/bulwark/steam-deck.nix index 86b79db0..521d18c8 100644 --- a/provision/hosts/bulwark/steam-deck.nix +++ b/provision/hosts/bulwark/steam-deck.nix @@ -6,7 +6,7 @@ ]; jovian = { - steam.desktopSession = "gnome-xorg"; + steam.desktopSession = "gnome"; steam.enable = true; steam.autoStart = true; steam.user = "${user}"; @@ -15,39 +15,11 @@ }; }; - # Enable GNOME - services.xserver.enable = true; - services.xserver.desktopManager.gnome.enable = true; - services.xserver.displayManager.gdm.enable = false; - - # Enable sound and handle conflict (https://github.com/Jovian-Experiments/Jovian-NixOS/issues/99) - sound.enable = true; - hardware.pulseaudio.enable = lib.mkForce false; + # Disable gdm (this is required for Jovian-NixOS) + services.xserver.displayManager.gdm.enable = lib.mkForce false; environment.systemPackages = with pkgs; [ jupiter-dock-updater-bin # Binary package for updating firmware on Jupiter Dock, a hardware accessory for certain laptops. steamdeck-firmware # Firmware package for Valve's Steam Deck, a handheld gaming device. ]; - - # GNOME settings through home - home-manager.users.${user} = { - dconf.settings = { - "org/gnome/desktop/background" = { - picture-options = "centered"; - picture-uri = "file://${../../../resources/img/bulwark.png}"; - picture-uri-dark = "file://${../../../resources/img/bulwark.png}"; - }; - # Enable on-screen keyboard - "org/gnome/desktop/a11y/applications" = { - screen-keyboard-enabled = true; - }; - "org/gnome/shell" = { - favorite-apps = [ - "steam.desktop" - "org.gnome.Console.desktop" - "chromium-browser.desktop" - ]; - }; - }; - }; } diff --git a/provision/hosts/torus/configuration.nix b/provision/hosts/torus/configuration.nix index 3575b67f..1041c878 100644 --- a/provision/hosts/torus/configuration.nix +++ b/provision/hosts/torus/configuration.nix @@ -85,7 +85,7 @@ services.pcscd.enable = true; programs.gnupg.agent = { enable = true; - pinentryFlavor = "curses"; + pinentryPackage = pkgs.pinentry-curses; enableSSHSupport = true; }; diff --git a/provision/modules/desktop/gnome.nix b/provision/modules/desktop/gnome.nix index 61c41fa3..66369ba8 100644 --- a/provision/modules/desktop/gnome.nix +++ b/provision/modules/desktop/gnome.nix @@ -149,11 +149,12 @@ in { center-new-windows = true; focus-change-on-pointer-rest = false; workspaces-only-on-primary = true; - dynamic-workspaces = true; + dynamic-workspaces = false; }; "org/gnome/desktop/wm/preferences" = { auto-raise = false; raise-on-click = false; + num-workspaces = 10; }; "org/gnome/shell/keybindings" = { switch-to-application-1 = []; diff --git a/provision/modules/devel/engineering.nix b/provision/modules/devel/engineering.nix index 78870bcc..a76ab6ab 100644 --- a/provision/modules/devel/engineering.nix +++ b/provision/modules/devel/engineering.nix @@ -9,10 +9,10 @@ in { config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ - super-slicer # 3D printing slicing software with advanced features and customization options. prusa-slicer # Slicing software optimized for Prusa 3D printers, offering user-friendly interface and settings. freecad # Open-source parametric 3D CAD modeler. blender # Open-source 3D creation suite for modeling, animation, rendering, and more. + openscad ]; }; } diff --git a/provision/modules/gaming/emulation.nix b/provision/modules/gaming/emulation.nix index 26a67949..f252012e 100644 --- a/provision/modules/gaming/emulation.nix +++ b/provision/modules/gaming/emulation.nix @@ -7,7 +7,6 @@ in { environment.systemPackages = with pkgs; [ yuzu-archive # Nintendo Switch emulator. - citra-archive # Nintendo 3DS emulator. dolphin-emu # GameCube and Wii emulator. ppsspp # PSP emulator. mgba # Game Boy Advance emulator. @@ -17,6 +16,7 @@ in { snes9x # Super Nintendo Entertainment System (SNES) emulator. mgba # Game Boy Advance emulator. melonds # Nintendo DS emulator. + citra # Nintendo 3DS emulator. ]; }) ]; diff --git a/provision/modules/services/peripherals.nix b/provision/modules/services/peripherals.nix index 0a7ec4ae..22dc14eb 100644 --- a/provision/modules/services/peripherals.nix +++ b/provision/modules/services/peripherals.nix @@ -5,11 +5,7 @@ in { options.modules.services.peripherals.enable = lib.mkEnableOption "peripherals"; config = lib.mkIf cfg.enable { - hardware.openrazer.enable = true; - hardware.openrazer.users = ["tstarr"]; - environment.systemPackages = with pkgs; [ - polychromatic # Graphical utility for configuring RGB lighting effects on Razer peripherals. pulseaudio # Sound server for Linux and other Unix-like operating systems. ]; diff --git a/provision/modules/system/ssh.nix b/provision/modules/system/ssh.nix index aa7f693c..a0fbce5f 100644 --- a/provision/modules/system/ssh.nix +++ b/provision/modules/system/ssh.nix @@ -9,7 +9,7 @@ in { services.pcscd.enable = true; programs.gnupg.agent = { enable = true; - pinentryFlavor = "curses"; + pinentryPackage = pkgs.pinentry-curses; enableSSHSupport = true; }; }; diff --git a/provision/overlays/default.nix b/provision/overlays/default.nix index 47d2d4e8..0dc67353 100644 --- a/provision/overlays/default.nix +++ b/provision/overlays/default.nix @@ -8,7 +8,6 @@ final: prev: { cookcli = final.callPackage ../pkgs/cookcli.nix {}; nx_tzdb = final.callPackage ../pkgs/nx_tzdb.nix {}; yuzu-archive = final.libsForQt5.callPackage ../pkgs/yuzu-archive.nix {}; - citra-archive = final.qt6Packages.callPackage ../pkgs/citra-archive.nix {}; gnome-set-panel-monitor = final.callPackage ../pkgs/gnome-set-panel-monitor.nix {}; gnome-maximize-lonely-window = final.callPackage ../pkgs/gnome-maximize-lonely-window.nix {}; gnome-fullscreen-to-empty-workspace = final.callPackage ../pkgs/gnome-fullscreen-to-empty-workspace.nix {}; diff --git a/provision/pkgs/citra-archive.nix b/provision/pkgs/citra-archive.nix deleted file mode 100644 index 63dec79a..00000000 --- a/provision/pkgs/citra-archive.nix +++ /dev/null @@ -1,156 +0,0 @@ -{ lib -, stdenv -, cmake -, boost -, pkg-config -, catch2_3 -, cpp-jwt -, cryptopp -, enet -, ffmpeg -, fmt -, gamemode -, glslang -, httplib -, inih -, libusb1 -, nlohmann_json -, openal -, openssl -, SDL2 -, soundtouch -, spirv-tools -, zstd -, vulkan-headers -, vulkan-loader -, enableSdl2Frontend ? true -, enableQt ? true, qtbase, qtmultimedia, qtwayland, wrapQtAppsHook -, enableQtTranslation ? enableQt, qttools -, enableWebService ? true -, enableCubeb ? true, cubeb -, useDiscordRichPresence ? false, rapidjson -, fetchFromGitea -}: -let - branch = "archive"; - version = "2088"; -in -stdenv.mkDerivation { - - pname = "citra-archive"; - version = "2088"; - - src = fetchFromGitea { - domain = "git.tstarr.us"; - owner = "tstarr"; - repo = "citra"; - rev = "813d0c2a302cd5b7cb23ed0307d8984df3df4a21"; - hash = "sha256-k07BdZr8Y4S8cUDJVnCw4NkeeRJoXfuK0aRx6EJ3bAQ="; - fetchSubmodules = true; - }; - - nativeBuildInputs = [ - cmake - pkg-config - ffmpeg - glslang - ] ++ lib.optionals enableQt [ wrapQtAppsHook ]; - - buildInputs = [ - boost - catch2_3 - cpp-jwt - cryptopp - # intentionally omitted: dynarmic - prefer vendored version for compatibility - enet - fmt - httplib - inih - libusb1 - nlohmann_json - openal - openssl - SDL2 - soundtouch - spirv-tools - vulkan-headers - # intentionally omitted: xbyak - prefer vendored version for compatibility - zstd - ] ++ lib.optionals enableQt [ qtbase qtmultimedia qtwayland ] - ++ lib.optional enableQtTranslation qttools - ++ lib.optional enableCubeb cubeb - ++ lib.optional useDiscordRichPresence rapidjson; - - cmakeFlags = [ - (lib.cmakeBool "USE_SYSTEM_LIBS" true) - - (lib.cmakeBool "DISABLE_SYSTEM_DYNARMIC" true) - (lib.cmakeBool "DISABLE_SYSTEM_GLSLANG" true) # The following imported targets are referenced, but are missing: SPIRV-Tools-opt - (lib.cmakeBool "DISABLE_SYSTEM_LODEPNG" true) # Not packaged in nixpkgs - (lib.cmakeBool "DISABLE_SYSTEM_VMA" true) - (lib.cmakeBool "DISABLE_SYSTEM_XBYAK" true) - - # We don't want to bother upstream with potentially outdated compat reports - (lib.cmakeBool "CITRA_ENABLE_COMPATIBILITY_REPORTING" true) - (lib.cmakeBool "ENABLE_COMPATIBILITY_LIST_DOWNLOAD" false) # We provide this deterministically - - (lib.cmakeBool "ENABLE_SDL2_FRONTEND" enableSdl2Frontend) - (lib.cmakeBool "ENABLE_QT" enableQt) - (lib.cmakeBool "ENABLE_QT_TRANSLATION" enableQtTranslation) - (lib.cmakeBool "ENABLE_WEB_SERVICE" enableWebService) - (lib.cmakeBool "ENABLE_CUBEB" enableCubeb) - (lib.cmakeBool "USE_DISCORD_PRESENCE" useDiscordRichPresence) - ]; - - # causes redefinition of _FORTIFY_SOURCE - hardeningDisable = [ "fortify3" ]; - - postPatch = let - branchCaptialized = (lib.toUpper (lib.substring 0 1 branch) + lib.substring 1 (-1) branch); - in '' - # Fix file not found when looking in var/empty instead of opt - mkdir -p externals/dynarmic/src/dynarmic/ir/var - ln -s ../opt externals/dynarmic/src/dynarmic/ir/var/empty - - # We already know the submodules are present - substituteInPlace CMakeLists.txt \ - --replace "check_submodules_present()" "" - - # Add versions - echo 'set(BUILD_FULLNAME "${branchCaptialized} ${version}")' >> CMakeModules/GenerateBuildInfo.cmake - - # Add gamemode - substituteInPlace externals/gamemode/include/gamemode_client.h --replace "libgamemode.so.0" "${lib.getLib gamemode}/lib/libgamemode.so.0" - ''; - - postInstall = let - libs = lib.makeLibraryPath [ vulkan-loader ]; - in lib.optionalString enableSdl2Frontend '' - wrapProgram "$out/bin/citra" \ - --prefix LD_LIBRARY_PATH : ${libs} - '' + lib.optionalString enableQt '' - qtWrapperArgs+=( - --prefix LD_LIBRARY_PATH : ${libs} - ) - ''; - - meta = with lib; { - broken = (stdenv.isLinux && stdenv.isAarch64); - homepage = "https://citra-emu.org"; - description = "The ${branch} branch of an open-source emulator for the Nintendo 3DS"; - longDescription = '' - A Nintendo 3DS Emulator written in C++ - Using the nightly branch is recommended for general usage. - Using the canary branch is recommended if you would like to try out - experimental features, with a cost of stability. - ''; - mainProgram = if enableQt then "citra-qt" else "citra"; - platforms = platforms.linux; - license = licenses.gpl2Plus; - maintainers = with maintainers; [ - abbradar - ashley - ivar - ]; - }; -} diff --git a/resources/img/wallpapers/gruvbox/bulwark.png b/resources/img/wallpapers/gruvbox/bulwark.png new file mode 100644 index 00000000..d24cd652 Binary files /dev/null and b/resources/img/wallpapers/gruvbox/bulwark.png differ