From 6cc2763bae1ee1ce3c72c42469799bf39e945a1c Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Sun, 30 Mar 2025 18:26:45 -0600 Subject: [PATCH 01/12] hope no one ever notices this --- pkgs/fish-rust/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/fish-rust/default.nix b/pkgs/fish-rust/default.nix index 0f09311..26ffa67 100644 --- a/pkgs/fish-rust/default.nix +++ b/pkgs/fish-rust/default.nix @@ -8,7 +8,7 @@ }: rustPlatform.buildRustPackage rec { pname = "fish"; - version = "4.1-2025-03-16-rust-${builtins.substring 0 7 "642ec399ca17bbde973dc20461335396fe922e4c"}"; + version = "4.0.1-2025-03-16-rust-${builtins.substring 0 7 "642ec399ca17bbde973dc20461335396fe922e4c"}"; src = fetchgit { url = "https://github.com/fish-shell/fish-shell.git"; From b18938907a186d59d1307ce80c20191d39ec5efa Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Sun, 30 Mar 2025 18:26:50 -0600 Subject: [PATCH 02/12] bump --- hosts/local-packages.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hosts/local-packages.nix b/hosts/local-packages.nix index a3a929c..ced648f 100644 --- a/hosts/local-packages.nix +++ b/hosts/local-packages.nix @@ -128,6 +128,14 @@ in { tflint sqlfluff rustc + mercurial + tree-sitter + luajitPackages.jsregexp + nodePackages.typescript + nasm + elixir + swift + zig python3Packages.debugpy customPkgs.python-ngx-lsp ]; From 4aaf6b9d993c8ac52f6e89ca792c6ee941f1ffda Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Mon, 31 Mar 2025 12:52:03 -0600 Subject: [PATCH 03/12] staging --- home-manager/cobray.nix | 6 +- home-manager/modules/ffmpeg.nix | 8 ++ hosts/local-packages.nix | 156 ++++++++++++++++---------------- 3 files changed, 89 insertions(+), 81 deletions(-) create mode 100644 home-manager/modules/ffmpeg.nix diff --git a/home-manager/cobray.nix b/home-manager/cobray.nix index f416e5b..5e3c26d 100644 --- a/home-manager/cobray.nix +++ b/home-manager/cobray.nix @@ -1,7 +1,4 @@ -{ - pkgs, - ... -}: { +{pkgs, ...}: { imports = [ ./modules/dunst.nix ./modules/fish.nix @@ -13,6 +10,7 @@ ./modules/rofi.nix ./modules/starship.nix ./modules/zellij.nix + ./modules/ffmpeg.nix ]; home.username = "cobray"; diff --git a/home-manager/modules/ffmpeg.nix b/home-manager/modules/ffmpeg.nix new file mode 100644 index 0000000..d1a2adb --- /dev/null +++ b/home-manager/modules/ffmpeg.nix @@ -0,0 +1,8 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + (ffmpeg.override { + withXcb = true; + withXlib = true; + }) + ]; +} diff --git a/hosts/local-packages.nix b/hosts/local-packages.nix index ced648f..20b5d12 100644 --- a/hosts/local-packages.nix +++ b/hosts/local-packages.nix @@ -14,91 +14,63 @@ in { environment.systemPackages = with pkgs; [ brave # TODO: make a module to save browser stuff vesktop - git - nodejs - wget - curl - tree - gnumake - gcc - socat - ffmpeg - gnused - gdb - stdenv.cc.cc.lib - nix-prefetch-git - binutils - hashcat - cmake - ninja - pkg-config - autoconf - automake - libtool - gawk obs-studio + spotify + flameshot + mpv + udiskie + git + git-lfs + gitAndTools.gh + gitAndTools.diff-so-fancy lazygit lazydocker - jdk17 + mercurial + nodejs + nodePackages.pnpm + nodePackages.typescript + yarn bun - maven - gradle - visualvm - jdt-language-server - htop - btop - nvtopPackages.full - fd - fzf - jq - bash - customPkgs.fish-rust - go - ollama - sqls deno - redis - cloudflared + go + go-tools + gopls + rustc rustup cargo-edit cargo-watch cargo-outdated cargo-audit - openssl - openssl.dev + rust-analyzer + python3Packages.debugpy + customPkgs.python-ngx-lsp + gcc + stdenv.cc.cc.lib + gnumake + cmake + ninja + binutils + gdb pkg-config - libxml2 - zlib + autoconf + automake + libtool + nasm + elixir + swift + zig ghc cabal-install stack haskell-language-server - postgresql - sqlite - spotify - git-lfs - gitAndTools.gh - gitAndTools.diff-so-fancy - ani-cli - yt-dlp - nmap - psmisc - ugrep - unzip - starship - flameshot - yarn - mpv - httpie - wrk - nodePackages.pnpm - zlib.dev - udiskie - rust-analyzer + jdk17 + maven + gradle + visualvm + jdt-language-server clang-tools vscode-langservers-extracted nodePackages.eslint - gopls lua-language-server marksman nil @@ -120,23 +92,53 @@ in { hadolint shellcheck cppcheck - go-tools rubocop phpPackages.php-codesniffer phpPackages.phpstan checkstyle tflint sqlfluff - rustc - mercurial + wget + curl + tree + socat + gnused + gawk + nmap + psmisc + ugrep + unzip + starship + htop + btop + nvtopPackages.full + fd + fzf + jq + bash + customPkgs.fish-rust + xorg.xdpyinfo + slop + dunst + pulseaudio + ani-cli + yt-dlp + httpie + wrk + cloudflared + hashcat + nix-prefetch-git + openssl + openssl.dev + libxml2 + zlib + zlib.dev + postgresql + sqlite + redis + sqls + ollama tree-sitter luajitPackages.jsregexp - nodePackages.typescript - nasm - elixir - swift - zig - python3Packages.debugpy - customPkgs.python-ngx-lsp ]; } From 5ef5281dc18f2dbe5492d51931e27cfd204c2606 Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Mon, 31 Mar 2025 16:39:56 -0600 Subject: [PATCH 04/12] cleanup --- hosts/local-packages.nix | 1 + modules/audio.nix | 1 - modules/bluetooth.nix | 5 +---- modules/boot.nix | 13 +++++++------ modules/default.nix | 1 + modules/docker.nix | 5 +---- modules/env.nix | 2 -- modules/fonts.nix | 5 +---- modules/home-manager.nix | 5 +---- modules/i3-xfce.nix | 5 +---- modules/net.nix | 9 +++------ modules/nixos.nix | 4 +--- modules/steam.nix | 6 ++---- modules/tailscale.nix | 10 ++++++++++ modules/timezone.nix | 4 +--- 15 files changed, 31 insertions(+), 45 deletions(-) create mode 100644 modules/tailscale.nix diff --git a/hosts/local-packages.nix b/hosts/local-packages.nix index 20b5d12..9fc0c7c 100644 --- a/hosts/local-packages.nix +++ b/hosts/local-packages.nix @@ -140,5 +140,6 @@ in { ollama tree-sitter luajitPackages.jsregexp + tailscale ]; } diff --git a/modules/audio.nix b/modules/audio.nix index e1451fe..75a62a0 100644 --- a/modules/audio.nix +++ b/modules/audio.nix @@ -15,6 +15,5 @@ environment.systemPackages = with pkgs; [ cava pulseaudio - ffmpeg ]; } diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix index be4d765..6524660 100644 --- a/modules/bluetooth.nix +++ b/modules/bluetooth.nix @@ -1,7 +1,4 @@ -{ - pkgs, - ... -}: { +{pkgs, ...}: { hardware.bluetooth = { enable = true; powerOnBoot = true; diff --git a/modules/boot.nix b/modules/boot.nix index 7ee7d23..9059bea 100644 --- a/modules/boot.nix +++ b/modules/boot.nix @@ -1,7 +1,4 @@ -{ - pkgs, - ... -}: { +{pkgs, ...}: { # Bootloader boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; @@ -13,9 +10,13 @@ deps = []; text = '' mkdir -p /bin - ln -sf ${pkgs.bash}/bin/bash /bin/bash + if [ ! -e /bin/bash ]; then + ln -sf ${pkgs.bash}/bin/bash /bin/bash + fi mkdir -p /usr/bin - ln -sf ${pkgs.coreutils}/bin/env /usr/bin/env + if [ ! -e /usr/bin/env ]; then + ln -sf ${pkgs.coreutils}/bin/env /usr/bin/env + fi ''; }; } diff --git a/modules/default.nix b/modules/default.nix index a8d190f..22a600e 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -18,6 +18,7 @@ ./timezone.nix ./user.nix ./python.nix + ./tailscale.nix ]; # Enable CUPS to print documents. diff --git a/modules/docker.nix b/modules/docker.nix index 4a14735..0313ced 100644 --- a/modules/docker.nix +++ b/modules/docker.nix @@ -1,7 +1,4 @@ -{ - pkgs, - ... -}: { +{pkgs, ...}: { virtualisation.docker = { enable = true; enableOnBoot = true; diff --git a/modules/env.nix b/modules/env.nix index 9836023..de49f65 100644 --- a/modules/env.nix +++ b/modules/env.nix @@ -13,7 +13,6 @@ EDITOR = "nvim"; VISUAL = "nvim"; TERM = "ghostty"; - GTK_THEME = lib.mkDefault "Adwaita:dark"; CC = "${pkgs.gcc}/bin/gcc"; PKG_CONFIG_PATH = lib.makeSearchPath "lib/pkgconfig" [ pkgs.openssl.dev @@ -27,7 +26,6 @@ "/bin" ]; - # Enable direnv with nix integration programs.direnv = { enable = true; nix-direnv.enable = true; diff --git a/modules/fonts.nix b/modules/fonts.nix index 1237375..32d3d04 100644 --- a/modules/fonts.nix +++ b/modules/fonts.nix @@ -1,7 +1,4 @@ -{ - pkgs, - ... -}: let +{pkgs, ...}: let clear-sans = pkgs.stdenv.mkDerivation { name = "clear-sans"; src = pkgs.fetchurl { diff --git a/modules/home-manager.nix b/modules/home-manager.nix index f33d71a..2ab0065 100644 --- a/modules/home-manager.nix +++ b/modules/home-manager.nix @@ -1,7 +1,4 @@ -{ - inputs, - ... -}: { +{inputs, ...}: { imports = [ inputs.home-manager.nixosModules.home-manager ]; diff --git a/modules/i3-xfce.nix b/modules/i3-xfce.nix index f6b40f9..7074326 100644 --- a/modules/i3-xfce.nix +++ b/modules/i3-xfce.nix @@ -1,7 +1,4 @@ -{ - pkgs, - ... -}: let +{pkgs, ...}: let wallpapers = [ "${pkgs.nixos-artwork.wallpapers.simple-dark-gray}/share/backgrounds/nixos/nixos-wallpaper.png" "${pkgs.nixos-artwork.wallpapers.gnome-dark}/share/backgrounds/gnome/gnome-dark.png" diff --git a/modules/net.nix b/modules/net.nix index 3cc67f0..a2f689b 100644 --- a/modules/net.nix +++ b/modules/net.nix @@ -1,14 +1,11 @@ -{ - pkgs, - ... -}: { +{pkgs, ...}: { environment.systemPackages = with pkgs; [ networkmanager_dmenu networkmanagerapplet ]; - networking.firewall.allowedTCPPorts = [ 57621 ]; - networking.firewall.allowedUDPPorts = [ 5353 ]; + networking.firewall.allowedTCPPorts = [57621]; + networking.firewall.allowedUDPPorts = [5353]; networking.wireless.enable = false; # Enables wireless support via wpa_supplicant. networking.hostName = "nixos"; diff --git a/modules/nixos.nix b/modules/nixos.nix index 5f6c83a..3391ba1 100644 --- a/modules/nixos.nix +++ b/modules/nixos.nix @@ -1,6 +1,4 @@ -{ - ... -}: { +{...}: { nixpkgs.config.allowUnfree = true; programs.nix-index.enable = true; programs.command-not-found.enable = false; diff --git a/modules/steam.nix b/modules/steam.nix index e0172f6..12e77c0 100644 --- a/modules/steam.nix +++ b/modules/steam.nix @@ -1,11 +1,9 @@ -{ - pkgs, - ... -}: { +{pkgs, ...}: { programs.steam = { enable = true; remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; + # apparently enabling this makes big picture boot up, does not work on nvidia however # gamescopeSession.enable = true; extraCompatPackages = [ pkgs.proton-ge-bin diff --git a/modules/tailscale.nix b/modules/tailscale.nix new file mode 100644 index 0000000..a86274a --- /dev/null +++ b/modules/tailscale.nix @@ -0,0 +1,10 @@ +{...}: { + services.tailscale = { + enable = true; + }; + + networking.firewall = { + allowedUDPPorts = [41641]; + trustedInterfaces = ["tailscale0"]; + }; +} diff --git a/modules/timezone.nix b/modules/timezone.nix index 9e5451d..2efc82a 100644 --- a/modules/timezone.nix +++ b/modules/timezone.nix @@ -1,6 +1,4 @@ -{ - ... -}: { +{...}: { time.timeZone = "America/Edmonton"; i18n.defaultLocale = "en_CA.UTF-8"; } From 4cea0a966e1ee029ed4aea0638daab4c4171857a Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Tue, 1 Apr 2025 06:59:41 -0600 Subject: [PATCH 05/12] staging --- home-manager/cobray.nix | 1 + home-manager/modules/emulators.nix | 15 +++++++++++++++ hosts/local-packages.nix | 1 + 3 files changed, 17 insertions(+) create mode 100644 home-manager/modules/emulators.nix diff --git a/home-manager/cobray.nix b/home-manager/cobray.nix index 5e3c26d..f6c2ef3 100644 --- a/home-manager/cobray.nix +++ b/home-manager/cobray.nix @@ -11,6 +11,7 @@ ./modules/starship.nix ./modules/zellij.nix ./modules/ffmpeg.nix + ./modules/emulators.nix ]; home.username = "cobray"; diff --git a/home-manager/modules/emulators.nix b/home-manager/modules/emulators.nix new file mode 100644 index 0000000..8b6747b --- /dev/null +++ b/home-manager/modules/emulators.nix @@ -0,0 +1,15 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + mgba + desmume + duckstation + pcsx2 + rpcs3 + ryujinx + mupen64plus + dolphin-emulator + retroarch + mednafen + joycond + ]; +} diff --git a/hosts/local-packages.nix b/hosts/local-packages.nix index 9fc0c7c..8e7efb7 100644 --- a/hosts/local-packages.nix +++ b/hosts/local-packages.nix @@ -141,5 +141,6 @@ in { tree-sitter luajitPackages.jsregexp tailscale + cachix ]; } From ad06ac826edfd1e0f742bcc7665554e1b29f76b9 Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Tue, 1 Apr 2025 11:36:16 -0600 Subject: [PATCH 06/12] staging again --- home-manager/modules/emulators.nix | 2 +- hosts/local-packages.nix | 2 ++ modules/npm.nix | 38 ++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 modules/npm.nix diff --git a/home-manager/modules/emulators.nix b/home-manager/modules/emulators.nix index 8b6747b..816e321 100644 --- a/home-manager/modules/emulators.nix +++ b/home-manager/modules/emulators.nix @@ -7,7 +7,7 @@ rpcs3 ryujinx mupen64plus - dolphin-emulator + dolphin-emu retroarch mednafen joycond diff --git a/hosts/local-packages.nix b/hosts/local-packages.nix index 8e7efb7..a3f20dc 100644 --- a/hosts/local-packages.nix +++ b/hosts/local-packages.nix @@ -7,9 +7,11 @@ in { imports = [ ../modules/python.nix + ../modules/npm.nix ]; python.enable = true; + npm.enable = true; environment.systemPackages = with pkgs; [ brave # TODO: make a module to save browser stuff diff --git a/modules/npm.nix b/modules/npm.nix new file mode 100644 index 0000000..77c1f0f --- /dev/null +++ b/modules/npm.nix @@ -0,0 +1,38 @@ +{ + config, + pkgs, + lib, + ... +}: let + npmConf = pkgs.writeText "npmrc" '' + prefix=${config.environment.variables.NPM_CONFIG_PREFIX} + cache=$HOME/.npm + init-module=$HOME/.npm-init.js + node-linker=hoisted + ''; +in { + options.npm = { + enable = lib.mkEnableOption "System NPM Environment"; + }; + config = lib.mkIf config.npm.enable { + environment.systemPackages = with pkgs; [ + nodejs + nodePackages.npm + ]; + environment.variables = { + NPM_CONFIG_PREFIX = "$HOME/.npm-global"; + PATH = ["$HOME/.npm-global/bin"]; + NPM_CONFIG_USERCONFIG = "${npmConf}"; + }; + system.userActivationScripts.setupNpm = '' + mkdir -p $HOME/.npm-global/bin + mkdir -p $HOME/.npm + if [ ! -f "$HOME/.npmrc" ]; then + cp ${npmConf} $HOME/.npmrc + fi + if [ -d "$HOME/.npm-global" ]; then + chmod -R +rw $HOME/.npm-global + fi + ''; + }; +} From 62efd21ccb6c915468cf869be47bde3091f38136 Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Tue, 1 Apr 2025 18:51:00 -0600 Subject: [PATCH 07/12] update --- modules/npm.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/npm.nix b/modules/npm.nix index 77c1f0f..6317f91 100644 --- a/modules/npm.nix +++ b/modules/npm.nix @@ -4,8 +4,9 @@ lib, ... }: let + npmGlobalDir = "$HOME/.npm-global"; npmConf = pkgs.writeText "npmrc" '' - prefix=${config.environment.variables.NPM_CONFIG_PREFIX} + prefix=${npmGlobalDir} cache=$HOME/.npm init-module=$HOME/.npm-init.js node-linker=hoisted @@ -20,18 +21,18 @@ in { nodePackages.npm ]; environment.variables = { - NPM_CONFIG_PREFIX = "$HOME/.npm-global"; - PATH = ["$HOME/.npm-global/bin"]; + NPM_CONFIG_PREFIX = npmGlobalDir; + PATH = ["${npmGlobalDir}/bin"]; NPM_CONFIG_USERCONFIG = "${npmConf}"; }; system.userActivationScripts.setupNpm = '' - mkdir -p $HOME/.npm-global/bin + mkdir -p ${npmGlobalDir}/bin mkdir -p $HOME/.npm if [ ! -f "$HOME/.npmrc" ]; then cp ${npmConf} $HOME/.npmrc fi - if [ -d "$HOME/.npm-global" ]; then - chmod -R +rw $HOME/.npm-global + if [ -d "${npmGlobalDir}" ]; then + chmod -R +rw ${npmGlobalDir} fi ''; }; From 440506cabfc44220c21ef088c06bb21e49999443 Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Thu, 3 Apr 2025 09:07:43 -0600 Subject: [PATCH 08/12] staging --- home-manager/modules/emulators.nix | 16 ++++++++++++++-- hosts/local-packages.nix | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/home-manager/modules/emulators.nix b/home-manager/modules/emulators.nix index 816e321..6e32556 100644 --- a/home-manager/modules/emulators.nix +++ b/home-manager/modules/emulators.nix @@ -1,15 +1,27 @@ -{pkgs, ...}: { +{pkgs, ...}: let + rpcs3_latest = pkgs.rpcs3.overrideAttrs (oldAttrs: { + src = builtins.fetchGit { + url = "https://github.com/RPCS3/rpcs3.git"; + ref = "master"; + }; + }); +in { home.packages = with pkgs; [ mgba desmume duckstation pcsx2 - rpcs3 ryujinx mupen64plus dolphin-emu retroarch mednafen joycond + ( + if (builtins.tryEval rpcs3_latest).success + then rpcs3_latest + else rpcs3 + ) + # uses latest commit, but in case of errors (if there were any in the first place) to fallback to snapshot nix package in case it failed (even if not) ]; } diff --git a/hosts/local-packages.nix b/hosts/local-packages.nix index a3f20dc..a4f0fe3 100644 --- a/hosts/local-packages.nix +++ b/hosts/local-packages.nix @@ -16,6 +16,7 @@ in { environment.systemPackages = with pkgs; [ brave # TODO: make a module to save browser stuff vesktop + discord obs-studio spotify flameshot From aecfcb0fa6ca7b747f80251c93ea3c896588b986 Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Thu, 3 Apr 2025 09:23:15 -0600 Subject: [PATCH 09/12] update --- flake.lock | 37 ++++++++++++++++++++++-------- flake.nix | 13 +++++++++-- home-manager/cobray.nix | 8 +++++-- home-manager/modules/emulators.nix | 15 +++++------- 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/flake.lock b/flake.lock index e1cd970..d1a4060 100644 --- a/flake.lock +++ b/flake.lock @@ -25,11 +25,11 @@ ] }, "locked": { - "lastModified": 1743295846, - "narHash": "sha256-hKKz07d4RV9gzxzE5Qu3RQWX8a7XpzRrP5timoxoGRQ=", + "lastModified": 1743648554, + "narHash": "sha256-23JFd+zd2GamTTdnGuFVeIg8x8C3hLpQJRh/PGTORzo=", "owner": "nix-community", "repo": "home-manager", - "rev": "717030011980e9eb31eb8ce011261dd532bce92c", + "rev": "107352dde4ff3c01cb5a0b3fe17f5beef37215bc", "type": "github" }, "original": { @@ -44,11 +44,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1743299372, - "narHash": "sha256-vFuxkHPd+Xpi5Bx1VCyZwYl/BbF83C+KmlbPBNVJvNU=", + "lastModified": 1743644846, + "narHash": "sha256-I217zRnDlSdWzoZi4sHaRKdY+x60tLOo8TyRshkyUBM=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "2ab0a37308559926bddb0009dfcf16a2a5b34e2b", + "rev": "a6fac721ece856f5dd4690b41b92e7ba3a71d033", "type": "github" }, "original": { @@ -90,11 +90,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1743231893, - "narHash": "sha256-tpJsHMUPEhEnzySoQxx7+kA+KUtgWqvlcUBqROYNNt0=", + "lastModified": 1743576891, + "narHash": "sha256-vXiKURtntURybE6FMNFAVpRPr8+e8KoLPrYs9TGuAKc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c570c1f5304493cafe133b8d843c7c1c4a10d3a6", + "rev": "44a69ed688786e98a101f02b712c313f1ade37ab", "type": "github" }, "original": { @@ -108,7 +108,24 @@ "inputs": { "home-manager": "home-manager", "nix-gaming": "nix-gaming", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_2", + "rpcs3-latest": "rpcs3-latest" + } + }, + "rpcs3-latest": { + "flake": false, + "locked": { + "lastModified": 1743659989, + "narHash": "sha256-qrzu2BGzaaCnUMjpqe4O/amr3fPzASUiyc8wYU5pnQQ=", + "owner": "RPCS3", + "repo": "rpcs3", + "rev": "37dbd77628f44cdef3228bdfc03127365ec7383b", + "type": "github" + }, + "original": { + "owner": "RPCS3", + "repo": "rpcs3", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 57f5809..8e99732 100644 --- a/flake.nix +++ b/flake.nix @@ -8,7 +8,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; nix-gaming = { - url = "github:fufexan/nix-gaming"; + url = "github:fufexan/nix-gaming"; # for glorious eggrolls + }; + rpcs3-latest = { + url = "github:RPCS3/rpcs3"; + flake = false; }; }; @@ -17,6 +21,7 @@ nixpkgs, home-manager, nix-gaming, + rpcs3-latest, ... } @ inputs: let system = "x86_64-linux"; @@ -31,6 +36,10 @@ overlays = [customPkgsOverlay]; }; lib = nixpkgs.lib; + + rpcs3_latest = pkgs.rpcs3.overrideAttrs (oldAttrs: { + src = rpcs3-latest; + }); in { nixosConfigurations = { nixos = lib.nixosSystem { @@ -46,7 +55,7 @@ homeConfigurations = { "cobray" = home-manager.lib.homeManagerConfiguration { inherit pkgs; - extraSpecialArgs = {inherit inputs;}; + extraSpecialArgs = {inherit inputs rpcs3_latest;}; modules = [./home-manager/cobray.nix]; }; }; diff --git a/home-manager/cobray.nix b/home-manager/cobray.nix index f6c2ef3..e35b4be 100644 --- a/home-manager/cobray.nix +++ b/home-manager/cobray.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + rpcs3_latest, + ... +}: { imports = [ ./modules/dunst.nix ./modules/fish.nix @@ -11,7 +15,7 @@ ./modules/starship.nix ./modules/zellij.nix ./modules/ffmpeg.nix - ./modules/emulators.nix + (import ./modules/emulators.nix {inherit pkgs rpcs3_latest;}) ]; home.username = "cobray"; diff --git a/home-manager/modules/emulators.nix b/home-manager/modules/emulators.nix index 6e32556..0e2b965 100644 --- a/home-manager/modules/emulators.nix +++ b/home-manager/modules/emulators.nix @@ -1,11 +1,8 @@ -{pkgs, ...}: let - rpcs3_latest = pkgs.rpcs3.overrideAttrs (oldAttrs: { - src = builtins.fetchGit { - url = "https://github.com/RPCS3/rpcs3.git"; - ref = "master"; - }; - }); -in { +{ + pkgs, + rpcs3_latest, + ... +}: { home.packages = with pkgs; [ mgba desmume @@ -17,11 +14,11 @@ in { retroarch mednafen joycond + # uses latest commit, but in case of errors (if there were any in the first place) to fallback to snapshot nix package in case it failed (even if not) ( if (builtins.tryEval rpcs3_latest).success then rpcs3_latest else rpcs3 ) - # uses latest commit, but in case of errors (if there were any in the first place) to fallback to snapshot nix package in case it failed (even if not) ]; } From 751d5e996f6969e49e50a9768aea0c3de7cf1b4c Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Thu, 3 Apr 2025 13:21:50 -0600 Subject: [PATCH 10/12] staging --- flake.nix | 51 ++++++++++++++++++++++++++++-- home-manager/cobray.nix | 3 +- home-manager/modules/emulators.nix | 8 +++-- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index 8e99732..d42e614 100644 --- a/flake.nix +++ b/flake.nix @@ -25,11 +25,58 @@ ... } @ inputs: let system = "x86_64-linux"; - customPkgsOverlay = final: prev: - import ./pkgs { + customPkgsOverlay = final: prev: let + customPkgs = import ./pkgs { pkgs = prev; lib = prev.lib; }; + in + customPkgs + // { + pugixml = prev.pugixml.overrideAttrs (oldAttrs: rec { + version = "1.15"; + src = prev.fetchurl { + url = "https://github.com/zeux/pugixml/releases/download/v${version}/pugixml-${version}.tar.gz"; + sha256 = "ZVreV/pwP7QhwuuaARO1BkvdsUXUFd0fiMeTU9kNURo="; + }; + }); + SDL3 = prev.stdenv.mkDerivation rec { + pname = "SDL3"; + version = "3.1.3"; + src = prev.fetchFromGitHub { + owner = "libsdl-org"; + repo = "SDL"; + rev = "preview-${version}"; + sha256 = "XQwcl/udA+r5HJs21K+GtZ2GIXfXUHjYTXFYW4Yx+Do="; + }; + nativeBuildInputs = [prev.cmake]; + buildInputs = [ + prev.libGL + prev.xorg.libX11 + prev.xorg.libXext + prev.alsa-lib + ]; + cmakeFlags = [ + "-DSDL_STATIC=OFF" + "-DSDL_SHARED=ON" + ]; + }; + rpcs3 = prev.rpcs3.overrideAttrs (oldAttrs: { + nativeBuildInputs = + (oldAttrs.nativeBuildInputs or []) + ++ [ + prev.llvmPackages_18.llvm.dev + prev.llvmPackages_18.clang + ]; + buildInputs = + (oldAttrs.buildInputs or []) + ++ [ + prev.llvmPackages_18.llvm + prev.llvmPackages_18.libclang + final.SDL3 + ]; + }); + }; pkgs = import nixpkgs { inherit system; config.allowUnfree = true; diff --git a/home-manager/cobray.nix b/home-manager/cobray.nix index e35b4be..cb4c2b8 100644 --- a/home-manager/cobray.nix +++ b/home-manager/cobray.nix @@ -1,5 +1,6 @@ { pkgs, + inputs, rpcs3_latest, ... }: { @@ -15,7 +16,7 @@ ./modules/starship.nix ./modules/zellij.nix ./modules/ffmpeg.nix - (import ./modules/emulators.nix {inherit pkgs rpcs3_latest;}) + (import ./modules/emulators.nix {inherit pkgs inputs rpcs3_latest;}) ]; home.username = "cobray"; diff --git a/home-manager/modules/emulators.nix b/home-manager/modules/emulators.nix index 0e2b965..84f575b 100644 --- a/home-manager/modules/emulators.nix +++ b/home-manager/modules/emulators.nix @@ -1,8 +1,12 @@ { pkgs, - rpcs3_latest, + inputs, ... -}: { +}: let + rpcs3_latest = pkgs.rpcs3.overrideAttrs (oldAttrs: { + src = inputs.rpcs3-latest; + }); +in { home.packages = with pkgs; [ mgba desmume From fe9a07fad00d73f2f9e31b3d8236d6388eeb3f54 Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Thu, 3 Apr 2025 15:58:39 -0600 Subject: [PATCH 11/12] staging again --- .gitignore | 2 + flake.nix | 88 +++++++++++++++++++++++++++++++++++++++-- home-manager/cobray.nix | 9 +---- 3 files changed, 88 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 581da8a..1579bd4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ result *.nix.bak *.nix~ /nix/store/ +file.txt + *~ *.swp diff --git a/flake.nix b/flake.nix index d42e614..44f59e9 100644 --- a/flake.nix +++ b/flake.nix @@ -8,7 +8,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; nix-gaming = { - url = "github:fufexan/nix-gaming"; # for glorious eggrolls + url = "github:fufexan/nix-gaming"; }; rpcs3-latest = { url = "github:RPCS3/rpcs3"; @@ -37,7 +37,7 @@ version = "1.15"; src = prev.fetchurl { url = "https://github.com/zeux/pugixml/releases/download/v${version}/pugixml-${version}.tar.gz"; - sha256 = "ZVreV/pwP7QhwuuaARO1BkvdsUXUFd0fiMeTU9kNURo="; + sha256 = "sha256-ZVreV/pwP7QhwuuaARO1BkvdsUXUFd0fiMeTU9kNURo="; }; }); SDL3 = prev.stdenv.mkDerivation rec { @@ -47,7 +47,7 @@ owner = "libsdl-org"; repo = "SDL"; rev = "preview-${version}"; - sha256 = "XQwcl/udA+r5HJs21K+GtZ2GIXfXUHjYTXFYW4Yx+Do="; + sha256 = "sha256-S7yRcLHMPgq6+gec8l+ESxp2dJ+6Po/UNsBUXptQzMQ="; }; nativeBuildInputs = [prev.cmake]; buildInputs = [ @@ -59,7 +59,20 @@ cmakeFlags = [ "-DSDL_STATIC=OFF" "-DSDL_SHARED=ON" + "-DSDL_CMAKE_DEBUG_POSTFIX=" + "-DSDL_INSTALL_CMAKEDIR=${placeholder "out"}/lib/cmake/SDL3" ]; + postInstall = '' + echo "SDL3 contents:" >&2 + ls -lR $out >&2 + if [ -f "$out/lib/cmake/SDL3/SDL3Config.cmake" ]; then + echo "SDL3Config.cmake:" >&2 + cat $out/lib/cmake/SDL3/SDL3Config.cmake >&2 + else + echo "ERROR: SDL3Config.cmake not found" >&2 + exit 1 + fi + ''; }; rpcs3 = prev.rpcs3.overrideAttrs (oldAttrs: { nativeBuildInputs = @@ -67,6 +80,11 @@ ++ [ prev.llvmPackages_18.llvm.dev prev.llvmPackages_18.clang + prev.pkg-config + prev.qt6.qmake + prev.qt6.full + prev.xxd + prev.wayland-scanner ]; buildInputs = (oldAttrs.buildInputs or []) @@ -74,7 +92,60 @@ prev.llvmPackages_18.llvm prev.llvmPackages_18.libclang final.SDL3 + prev.qt6.full + prev.vulkan-loader + prev.vulkan-tools + prev.wayland + prev.wayland-protocols + prev.libxkbcommon + prev.libpulseaudio + prev.libevdev + prev.udev + prev.glew + prev.libpng + prev.zstd ]; + cmakeFlags = + (oldAttrs.cmakeFlags or []) + ++ [ + "-DCMAKE_PREFIX_PATH=${final.SDL3};${prev.qt6.full};${prev.wayland}" + "-DSDL3_DIR=${final.SDL3}/lib/cmake/SDL3" + "-DSDL3_INCLUDE_DIR=${final.SDL3}/include/SDL3" + "-DSDL3_LIBRARY=${final.SDL3}/lib/libSDL3.so" + "-DQt6_DIR=${prev.qt6.full}/lib/cmake/Qt6" + "-DWAYLAND_SCANNER=${prev.wayland-scanner}/bin/wayland-scanner" + "-DUSE_SYSTEM_FFMPEG=ON" + "-DUSE_SYSTEM_CURL=ON" + "-DUSE_SYSTEM_WOLFSSL=ON" + "-DUSE_QT=ON" + "-DUSE_VULKAN=ON" + "-DUSE_WAYLAND=ON" + "-DUSE_PULSEAUDIO=ON" + "-DUSE_LIBEVDEV=ON" + "-DUSE_SYSTEM_ZSTD=ON" + "-DCMAKE_VERBOSE_MAKEFILE=ON" + "-DCMake_MESSAGE_LOG_LEVEL=TRACE" + ]; + preConfigure = '' + echo "Verifying submodule directories:" >&2 + ls -l 3rdparty/hidapi/hidapi 3rdparty/glslang/glslang 3rdparty/yaml-cpp/yaml-cpp 3rdparty/zstd/zstd >&2 + if [ ! -f 3rdparty/hidapi/hidapi/CMakeLists.txt ]; then + echo "ERROR: hidapi submodule not fetched correctly" >&2 + exit 1 + fi + echo "Original 3rdparty/CMakeLists.txt:" >&2 + cat 3rdparty/CMakeLists.txt >&2 + sed -i '/find_package(SDL3/ { + s/find_package(SDL3.*)/set(SDL3_FOUND TRUE)/ + a set(SDL3_INCLUDE_DIRS "${final.SDL3}/include/SDL3") + a set(SDL3_LIBRARIES "${final.SDL3}/lib/libSDL3.so") + }' 3rdparty/CMakeLists.txt + sed -i 's/message(FATAL_ERROR "SDL3 is not available on this system")/# Patched: SDL3 assumed available/' 3rdparty/CMakeLists.txt + echo "Patched 3rdparty/CMakeLists.txt:" >&2 + cat 3rdparty/CMakeLists.txt >&2 + echo "Checking submodules:" >&2 + ls -lR 3rdparty/hidapi 3rdparty/glslang 3rdparty/yaml-cpp 3rdparty/cubeb 3rdparty/zstd >&2 + ''; }); }; pkgs = import nixpkgs { @@ -85,7 +156,16 @@ lib = nixpkgs.lib; rpcs3_latest = pkgs.rpcs3.overrideAttrs (oldAttrs: { - src = rpcs3-latest; + src = pkgs.fetchgit { + url = "https://github.com/RPCS3/rpcs3.git"; + rev = inputs.rpcs3-latest.rev; # Should be 37dbd77628f44cdef3228bdfc03127365ec7383b per flake.lock + sha256 = "sha256-Yx0Qsc0r+5C0BqqsbJCv47QPeaNbaIut8s6Hcysy2mo="; # Confirmed for 37dbd77628f44cdef3228bdfc03127365ec7383b with submodules + fetchSubmodules = true; + }; + preUnpack = '' + echo "Source rev: ${inputs.rpcs3-latest.rev}" >&2 + echo "Expected rev: 37dbd77628f44cdef3228bdfc03127365ec7383b" >&2 + ''; }); in { nixosConfigurations = { diff --git a/home-manager/cobray.nix b/home-manager/cobray.nix index cb4c2b8..f6c2ef3 100644 --- a/home-manager/cobray.nix +++ b/home-manager/cobray.nix @@ -1,9 +1,4 @@ -{ - pkgs, - inputs, - rpcs3_latest, - ... -}: { +{pkgs, ...}: { imports = [ ./modules/dunst.nix ./modules/fish.nix @@ -16,7 +11,7 @@ ./modules/starship.nix ./modules/zellij.nix ./modules/ffmpeg.nix - (import ./modules/emulators.nix {inherit pkgs inputs rpcs3_latest;}) + ./modules/emulators.nix ]; home.username = "cobray"; From d6fe9e9f5fa0fdda7f2a24ec27544f2878779f6c Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Thu, 3 Apr 2025 19:24:22 -0600 Subject: [PATCH 12/12] should be the last stage --- flake.lock | 6 +++--- flake.nix | 28 +++++++++++++++++++--------- home-manager/cobray.nix | 7 ++++++- home-manager/modules/emulators.nix | 16 +--------------- hosts/configuration.nix | 4 +--- modules/home-manager.nix | 8 ++++++-- 6 files changed, 36 insertions(+), 33 deletions(-) diff --git a/flake.lock b/flake.lock index d1a4060..d90e7e1 100644 --- a/flake.lock +++ b/flake.lock @@ -25,11 +25,11 @@ ] }, "locked": { - "lastModified": 1743648554, - "narHash": "sha256-23JFd+zd2GamTTdnGuFVeIg8x8C3hLpQJRh/PGTORzo=", + "lastModified": 1743717835, + "narHash": "sha256-LJm6FoIcUoBw3w25ty12/sBfut4zZuNGdN0phYj/ekU=", "owner": "nix-community", "repo": "home-manager", - "rev": "107352dde4ff3c01cb5a0b3fe17f5beef37215bc", + "rev": "66a6ec65f84255b3defb67ff45af86c844dd451b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 44f59e9..baf84a0 100644 --- a/flake.nix +++ b/flake.nix @@ -123,14 +123,15 @@ "-DUSE_PULSEAUDIO=ON" "-DUSE_LIBEVDEV=ON" "-DUSE_SYSTEM_ZSTD=ON" + "-DUSE_DISCORD_RPC=ON" "-DCMAKE_VERBOSE_MAKEFILE=ON" - "-DCMake_MESSAGE_LOG_LEVEL=TRACE" + "-DCMAKE_MESSAGE_LOG_LEVEL=TRACE" ]; preConfigure = '' echo "Verifying submodule directories:" >&2 - ls -l 3rdparty/hidapi/hidapi 3rdparty/glslang/glslang 3rdparty/yaml-cpp/yaml-cpp 3rdparty/zstd/zstd >&2 - if [ ! -f 3rdparty/hidapi/hidapi/CMakeLists.txt ]; then - echo "ERROR: hidapi submodule not fetched correctly" >&2 + ls -l 3rdparty/hidapi/hidapi 3rdparty/glslang/glslang 3rdparty/yaml-cpp/yaml-cpp 3rdparty/zstd/zstd 3rdparty/discord-rpc >&2 + if [ ! -f 3rdparty/hidapi/hidapi/CMakeLists.txt ] || [ ! -f 3rdparty/discord-rpc/CMakeLists.txt ]; then + echo "ERROR: Submodules (hidapi or discord-rpc) not fetched correctly" >&2 exit 1 fi echo "Original 3rdparty/CMakeLists.txt:" >&2 @@ -144,7 +145,7 @@ echo "Patched 3rdparty/CMakeLists.txt:" >&2 cat 3rdparty/CMakeLists.txt >&2 echo "Checking submodules:" >&2 - ls -lR 3rdparty/hidapi 3rdparty/glslang 3rdparty/yaml-cpp 3rdparty/cubeb 3rdparty/zstd >&2 + ls -lR 3rdparty/hidapi 3rdparty/glslang 3rdparty/yaml-cpp 3rdparty/cubeb 3rdparty/zstd 3rdparty/discord-rpc >&2 ''; }); }; @@ -158,27 +159,36 @@ rpcs3_latest = pkgs.rpcs3.overrideAttrs (oldAttrs: { src = pkgs.fetchgit { url = "https://github.com/RPCS3/rpcs3.git"; - rev = inputs.rpcs3-latest.rev; # Should be 37dbd77628f44cdef3228bdfc03127365ec7383b per flake.lock - sha256 = "sha256-Yx0Qsc0r+5C0BqqsbJCv47QPeaNbaIut8s6Hcysy2mo="; # Confirmed for 37dbd77628f44cdef3228bdfc03127365ec7383b with submodules + rev = inputs.rpcs3-latest.rev; + sha256 = "Yx0Qsc0r+5C0BqqsbJCv47QPeaNbaIut8s6Hcysy2mo="; fetchSubmodules = true; }; + nativeBuildInputs = oldAttrs.nativeBuildInputs; + buildInputs = oldAttrs.buildInputs; + cmakeFlags = + oldAttrs.cmakeFlags + ++ [ + "-DUSE_DISCORD_RPC=ON" + ]; preUnpack = '' echo "Source rev: ${inputs.rpcs3-latest.rev}" >&2 echo "Expected rev: 37dbd77628f44cdef3228bdfc03127365ec7383b" >&2 ''; }); in { + packages.${system} = { + rpcs3_latest = rpcs3_latest; + }; nixosConfigurations = { nixos = lib.nixosSystem { inherit system; - specialArgs = {inherit inputs;}; + specialArgs = {inherit inputs rpcs3_latest;}; modules = [ {nixpkgs.overlays = [customPkgsOverlay];} ./hosts/configuration.nix ]; }; }; - homeConfigurations = { "cobray" = home-manager.lib.homeManagerConfiguration { inherit pkgs; diff --git a/home-manager/cobray.nix b/home-manager/cobray.nix index f6c2ef3..ceae72f 100644 --- a/home-manager/cobray.nix +++ b/home-manager/cobray.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + rpcs3_latest, + ... +}: { imports = [ ./modules/dunst.nix ./modules/fish.nix @@ -30,5 +34,6 @@ btop nvtopPackages.full arandr + rpcs3_latest ]; } diff --git a/home-manager/modules/emulators.nix b/home-manager/modules/emulators.nix index 84f575b..202382d 100644 --- a/home-manager/modules/emulators.nix +++ b/home-manager/modules/emulators.nix @@ -1,12 +1,4 @@ -{ - pkgs, - inputs, - ... -}: let - rpcs3_latest = pkgs.rpcs3.overrideAttrs (oldAttrs: { - src = inputs.rpcs3-latest; - }); -in { +{pkgs, ...}: { home.packages = with pkgs; [ mgba desmume @@ -18,11 +10,5 @@ in { retroarch mednafen joycond - # uses latest commit, but in case of errors (if there were any in the first place) to fallback to snapshot nix package in case it failed (even if not) - ( - if (builtins.tryEval rpcs3_latest).success - then rpcs3_latest - else rpcs3 - ) ]; } diff --git a/hosts/configuration.nix b/hosts/configuration.nix index a0aad19..6f6e365 100644 --- a/hosts/configuration.nix +++ b/hosts/configuration.nix @@ -1,9 +1,7 @@ # Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running 'nixos-help'). -{ - ... -}: { +{...}: { imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix diff --git a/modules/home-manager.nix b/modules/home-manager.nix index 2ab0065..bd3ca97 100644 --- a/modules/home-manager.nix +++ b/modules/home-manager.nix @@ -1,4 +1,8 @@ -{inputs, ...}: { +{ + inputs, + rpcs3_latest, + ... +}: { imports = [ inputs.home-manager.nixosModules.home-manager ]; @@ -6,7 +10,7 @@ useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = { - inherit inputs; + inherit inputs rpcs3_latest; }; users.cobray = import ../home-manager/cobray.nix; };