diff --git a/home/bin/executable_linux-tree-dir b/home/bin/executable_linux-tree-dir new file mode 100644 index 00000000..86942740 --- /dev/null +++ b/home/bin/executable_linux-tree-dir @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +# Check if the directory is provided +if [ -z "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +# Function to print the tree with SHA256 sums +print_tree_with_md5() { + local dir="$1" + + # Use find to recursively list files, and calculate md5sum for each file + find "$dir" -type f | while read -r file; do + md5=$(md5sum "$file" | awk '{print $1}') + echo "$file - $md5" + done +} + +# Call the function with the provided directory +print_tree_with_md5 "$1" + diff --git a/home/dot_aliases b/home/dot_aliases index b6bcb559..a1b60e67 100644 --- a/home/dot_aliases +++ b/home/dot_aliases @@ -70,3 +70,9 @@ alias google-chrome-stable="google-chrome-stable --simulate-outdated-no-au='Tue, # rsync alias rsync.net="ssh fm2120@fm2120.rsync.net" + +# svs subwoofer +sv() { + pySVS 54:B7:E5:57:1A:7B --volume="$1" +} + diff --git a/provision/hosts/bulwark/configuration.nix b/provision/hosts/bulwark/configuration.nix index b2c33133..a8458bc0 100644 --- a/provision/hosts/bulwark/configuration.nix +++ b/provision/hosts/bulwark/configuration.nix @@ -20,10 +20,7 @@ modules = { desktop = { browser.enable = true; - gnome = { - enable = true; - wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}"; - }; + gnome.enable = true; }; devel = { notes.enable = true; diff --git a/provision/hosts/bulwark/steam-deck.nix b/provision/hosts/bulwark/steam-deck.nix index 180763b3..5f4c7f3f 100644 --- a/provision/hosts/bulwark/steam-deck.nix +++ b/provision/hosts/bulwark/steam-deck.nix @@ -8,8 +8,12 @@ steam.desktopSession = "gnome"; steam.enable = true; steam.user = "${user}"; + steam.autoStart = true; devices.steamdeck.enable = true; + devices.steamdeck.autoUpdate = true; }; + + 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. diff --git a/provision/hosts/kestrel/configuration.nix b/provision/hosts/kestrel/configuration.nix index 2f98329b..fbe11f64 100644 --- a/provision/hosts/kestrel/configuration.nix +++ b/provision/hosts/kestrel/configuration.nix @@ -36,10 +36,7 @@ modules = { desktop = { browser.enable = true; - gnome = { - enable = true; - wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/kestrel.png}"; - }; + gnome.enable = true; }; devel = { engineering.enable = true; diff --git a/provision/hosts/osprey/configuration.nix b/provision/hosts/osprey/configuration.nix index a08093dd..dc77b7d7 100644 --- a/provision/hosts/osprey/configuration.nix +++ b/provision/hosts/osprey/configuration.nix @@ -32,10 +32,7 @@ modules = { desktop = { browser.enable = true; - gnome = { - enable = true; - wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/osprey.png}"; - }; + gnome.enable = true; }; devel = { python.enable = true; @@ -53,13 +50,13 @@ system = { ssh.enable = true; terminal.enable = true; - #wireguard-client = { - # enable = true; - # privateKeyFile = "/run/agenix/wireguard/kestrel"; - # address = [ "192.168.3.3/24" ]; - # publicKey = "bd7bbZOngl/FTdBlnbIhgCLNf6yx5X8WjiRB7E1NEQQ="; - # endpoint = "66.218.43.87"; - #}; + wireguard-client = { + enable = true; + privateKeyFile = "/run/agenix/wireguard/osprey"; + address = [ "192.168.3.3/24" ]; + publicKey = "bd7bbZOngl/FTdBlnbIhgCLNf6yx5X8WjiRB7E1NEQQ="; + endpoint = "66.218.43.87"; + }; }; }; } diff --git a/provision/hosts/shivan/configuration.nix b/provision/hosts/shivan/configuration.nix index 62348dbf..aa4931b8 100644 --- a/provision/hosts/shivan/configuration.nix +++ b/provision/hosts/shivan/configuration.nix @@ -23,11 +23,7 @@ modules = { desktop = { browser.enable = true; - gnome = { - enable = true; - # TODO: Add Shivan wallpaper - wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}"; - }; + gnome.enable = true; }; devel = { engineering.enable = true; diff --git a/provision/hosts/torus/wireguard-server.nix b/provision/hosts/torus/wireguard-server.nix index c53df8d1..ff6d2142 100644 --- a/provision/hosts/torus/wireguard-server.nix +++ b/provision/hosts/torus/wireguard-server.nix @@ -57,6 +57,11 @@ publicKey = "CDoy/XI8FRQV/ySHigLWG2tpWVw8hgEZXRQCEE3qYHQ="; allowedIPs = [ "192.168.3.4/32" ]; } + { + # Osprey + publicKey = "xOn/GB4iK27f8oTrITodNNPIk6I4l34Fsde6i97aFR0="; + allowedIPs = [ "192.168.3.5/32" ]; + } # More peers can be added here. ]; }; diff --git a/provision/modules/desktop/gnome.nix b/provision/modules/desktop/gnome.nix index 42c490c8..806f34f5 100644 --- a/provision/modules/desktop/gnome.nix +++ b/provision/modules/desktop/gnome.nix @@ -19,10 +19,6 @@ in { options.modules.desktop.gnome = with lib; { enable = lib.mkEnableOption "gnome"; - wallpaper = lib.mkOption { - type = with types; str; - default = "file://${../../../resources/img/wallpapers/blank.png}"; - }; }; config = lib.mkIf cfg.enable { @@ -36,6 +32,7 @@ in { gnome-fullscreen-to-empty-workspace gnome-set-panel-monitor gnome-randr + ftw ]; environment.gnome.excludePackages = with pkgs; [ @@ -133,8 +130,6 @@ in { }; "org/gnome/desktop/background" = { picture-options = "zoom"; - picture-uri = "${cfg.wallpaper}"; - picture-uri-dark = "${cfg.wallpaper}"; }; "org/gnome/shell" = { favorite-apps = [ diff --git a/provision/modules/services/peripherals.nix b/provision/modules/services/peripherals.nix index caacaa65..96a3abc7 100644 --- a/provision/modules/services/peripherals.nix +++ b/provision/modules/services/peripherals.nix @@ -12,6 +12,7 @@ in { libimobiledevice # Library to support iPhone, iPod Touch and iPad devices on Linux ifuse # fuse filesystem implementation to access the contents of iOS devices usbtop + pySVS # control SVS subwoofers from the command-line ]; security.rtkit.enable = true; diff --git a/provision/overlays/default.nix b/provision/overlays/default.nix index a663b9ef..cf14d068 100644 --- a/provision/overlays/default.nix +++ b/provision/overlays/default.nix @@ -8,4 +8,6 @@ final: prev: { gnome-set-panel-monitor = final.callPackage ../pkgs/gnome-set-panel-monitor.nix {}; gnome-fullscreen-to-empty-workspace = final.callPackage ../pkgs/gnome-fullscreen-to-empty-workspace.nix {}; ryujinx = final.callPackage ../pkgs/ryujinx/default.nix {}; + pySVS = final.callPackage ../pkgs/pySVS.nix {}; + ftw = final.callPackage ../pkgs/ftw.nix {}; } diff --git a/provision/pkgs/ftw.nix b/provision/pkgs/ftw.nix new file mode 100644 index 00000000..20f947c6 --- /dev/null +++ b/provision/pkgs/ftw.nix @@ -0,0 +1,35 @@ +{ lib, stdenv, fetchFromGitHub, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "ftw"; + version = "0.0.1"; + + src = fetchFromGitHub { + owner = "starr-dusT"; + repo = "ftw"; + rev = "4a4ed10d3913028e2d97e9ab079401b8e948e088"; + sha256 = "sha256-Gxt895JQAopfdQ0XawKnZP06Wy4KJQhsbH4Aa8+ZSS4="; + }; + + format = "pyproject"; + + propagatedBuildInputs = with python3Packages; [ + numpy + wand + setuptools + ]; + + # There are no tests + doCheck = false; + + postInstall = '' + cp -R "$src/ftw/res" "$out/lib/python3.12/site-packages/ftw" + ''; + + meta = with lib; { + homepage = "https://github.com/starr-dusT/ftw"; + description = "Build custom ftl wallpapers in a complicated way for no reason"; + mainProgram = "ftw"; + maintainers = [ maintainers.starr-dusT ]; + }; +} diff --git a/provision/pkgs/pySVS.nix b/provision/pkgs/pySVS.nix new file mode 100644 index 00000000..28878a21 --- /dev/null +++ b/provision/pkgs/pySVS.nix @@ -0,0 +1,33 @@ +{ lib, stdenv, fetchFromGitHub, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "pySVS"; + version = "0.0.1"; + + src = fetchFromGitHub { + owner = "starr-dusT"; + repo = "pySVS"; + rev = "5c483d96c58aab77a18b64f3003dd67be584977c"; + sha256 = "sha256-2j4bIGmuQOBuRAy4s6M56USbrJ2SGK3cFYc3AkQ6lKg="; + }; + + format = "pyproject"; + + propagatedBuildInputs = with python3Packages; [ + requests + bleak + pillow + setuptools + ]; + + # There are no tests + doCheck = false; + + meta = with lib; { + homepage = "https://github.com/starr-dusT/pySVS"; + description = "Python CLI for controlling SVS subwoofers over bluetooth."; + mainProgram = "pySVS"; + license = licenses.mit; + maintainers = [ maintainers.starr-dusT ]; + }; +} diff --git a/provision/pkgs/sudachi.nix b/provision/pkgs/sudachi.nix index de7c12b9..2502791f 100644 --- a/provision/pkgs/sudachi.nix +++ b/provision/pkgs/sudachi.nix @@ -54,7 +54,8 @@ stdenv.mkDerivation (finalAttrs: { src = fetchzip { url = "https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.11/latest.zip"; - hash = "sha256-aQ1cNFG6JCNrMz4N9uv6QRidjNwvyJqGunhwhJpvv4s="; + hash = "sha256-HNNND8g9JyvrMjQxHq4udUtskGkqaISpq0TnzE2rb/U="; + stripRoot = false; }; nativeBuildInputs = [ diff --git a/provision/secrets/secrets.nix b/provision/secrets/secrets.nix index f6d4b019..1ccd889f 100644 --- a/provision/secrets/secrets.nix +++ b/provision/secrets/secrets.nix @@ -16,6 +16,7 @@ in "wireguard/kestrel.age".publicKeys = users ++ systems; "wireguard/torus.age".publicKeys = systems; "wireguard/bulwark.age".publicKeys = systems; + "wireguard/osprey.age".publicKeys = [ tstarr_osprey ] ++ systems; "git/gitea-runner-1.age".publicKeys = systems; "nextcloud/password.age".publicKeys = systems; "ssh/kestrel/id_ed25519.age".publicKeys = [ tstarr_kestrel ] ++ systems; diff --git a/provision/secrets/wireguard/osprey.age b/provision/secrets/wireguard/osprey.age new file mode 100644 index 00000000..a0dc4101 Binary files /dev/null and b/provision/secrets/wireguard/osprey.age differ