From 51beed138e6b6de4ef6fe2eaa8a8803a08600b6b Mon Sep 17 00:00:00 2001 From: "Wyatt J. Miller" Date: Sat, 13 Sep 2025 16:09:21 -0400 Subject: [PATCH] added dedicated focusrite scarlett, appimage modules, modified cloud these new modules include only packages, no other configuration. maybe later but none currently --- modules/apps/appimage.nix | 19 +++++++ modules/machine/cloud/configuration.nix | 68 +++++++++++++++---------- modules/sound/focusrite.nix | 33 ++++++++++++ 3 files changed, 94 insertions(+), 26 deletions(-) create mode 100644 modules/apps/appimage.nix create mode 100644 modules/sound/focusrite.nix diff --git a/modules/apps/appimage.nix b/modules/apps/appimage.nix new file mode 100644 index 0000000..2b6261e --- /dev/null +++ b/modules/apps/appimage.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.appimage; +in { + options.appimage = { + enable = mkEnableOption "AppImage support"; + }; + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + appimageupdate + appimage-run + ]; + }; +} diff --git a/modules/machine/cloud/configuration.nix b/modules/machine/cloud/configuration.nix index 1ec6029..4aa3fc8 100644 --- a/modules/machine/cloud/configuration.nix +++ b/modules/machine/cloud/configuration.nix @@ -21,11 +21,13 @@ in { inherit lib pkgs flatpakPackages; }) ../../apps/gaming.nix + ../../apps/appimage.nix ../../graphics ../../pwrMgmt ../../networking/core.nix ../../sound/pipewire.nix ../../sound/shairport.nix + ../../sound/focusrite.nix ../../virtualization/podman.nix ../../virtualization/hardware.nix ]; @@ -34,9 +36,13 @@ in { nix.settings.experimental-features = ["nix-command" "flakes"]; # Custom kernel/boot stuff - boot.kernelPackages = pkgs.linuxPackages_latest; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; # Enable Bluetooth if present hardware.bluetooth.enable = true; @@ -63,21 +69,6 @@ in { wl-clip-persist ]; - # Enable OpenSSH - services.openssh.enable = true; - - # Enable keyring - services.gnome.gnome-keyring.enable = true; - - # Enable GnuPG - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; - - # Enable SUID wrappers (some programs need them) - programs.mtr.enable = true; - # Enable Polkit security.polkit.enable = true; @@ -145,14 +136,39 @@ in { networkManager.enable = true; }; - # Enable dconf - programs.dconf.enable = true; + programs = { + # Enable GnuPG + gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + # Enable SUID wrappers (some programs need them) + mtr.enable = true; + + # Enable dconf + dconf.enable = true; + }; # Add username to groups "wheel" and "video" - more may be added here later users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"]; - # Flatpak packages (see ../../apps/flatpak.nix) - services.flatpak.packages = flatpakPackages; + services = { + # Enable OpenSSH + openssh.enable = true; + + # Enable keyring + gnome.gnome-keyring.enable = true; + + # Flatpak packages (see ../../apps/flatpak.nix) + flatpak.packages = flatpakPackages; + }; + + # Focusrite Scarlett audio interface support (see ../../sound/focusrite.nix) + sound.hardware.focusrite.enable = true; + + # AppImage support + appimage.enable = true; # XDG stuff xdg = { @@ -160,12 +176,12 @@ in { enable = true; config = { sway = { - default = [ "wlr" "gtk" ]; - "org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ]; + default = ["wlr" "gtk"]; + "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; }; common = { - default = [ "gtk" ]; - "org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ]; + default = ["gtk"]; + "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; }; }; extraPortals = with pkgs; [ diff --git a/modules/sound/focusrite.nix b/modules/sound/focusrite.nix new file mode 100644 index 0000000..24a6f00 --- /dev/null +++ b/modules/sound/focusrite.nix @@ -0,0 +1,33 @@ +# Must be paired with the pipewire Nix module, this does nothing but install packages +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.sound.hardware.focusrite; +in { + options.focusrite = { + enable = mkEnableOption "Focusrite audio interface support"; + guiSupport = mkOption { + type = types.bool; + default = false; + description = "Enable GUI support for Focusrite Scarlett audio interface (installs alsa-scarlett-gui)"; + }; + }; + config = mkIf cfg.enable (mkMerge [ + { + environment.systemPackages = with pkgs; + [ + scarlett2 + alsa-scarlett-gui + ] + ++ ( + if cfg.guiSupport + then [pkgs.alsa-scarlett-gui] + else [] + ); + } + ]); +}