diff --git a/hosts/main.nix b/hosts/main.nix deleted file mode 100644 index cfa6e41..0000000 --- a/hosts/main.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ inputs, pkgs, ... }: - -{ - imports = [ - ../nix-os/core.nix - ../nix-os/core-desktop.nix - ../nix-os/nvidia.nix - ../nix-os/docker.nix - ../nix-os/razer.nix - ../nix-os/desktopManagers/gnome.nix - ../nix-os/displayManagers/gdm.nix - #../nix-os/desktop/kde-plasma.nix - ../nix-os/shell.nix - ../nix-os/virtualization.nix - ../nix-os/polkit/disable-shutdown.nix - ../nix-os/locale.nix - ../nix-os/adb.nix - ../nix-os/account.nix - ../nix-os/xdg-default-apps.nix - ../nix-os/services/nix-binary-cache.nix - ../nix-os/udev.nix - ../nix-os/gnupg.nix - - "${inputs.nixos-vscode-server}" - ]; - - config = { - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - networking.hostName = "wroclaw-main"; - - services.xrdp.enable = true; - users.groups."tsusers".members = [ "wroclaw" ]; - - services.printing.drivers = with pkgs; [ - hplip - ]; - - # nixos-vscode-server module needs this - programs.nix-ld.enable = true; - services.vscode-server = { - enable = true; - extraRuntimeDependencies = with pkgs; [ - docker - ]; - }; - - services.printing.startWhenNeeded = false; - - system.stateVersion = "23.05"; - }; -} diff --git a/hosts/main/default.nix b/hosts/main/default.nix new file mode 100644 index 0000000..d35b5bc --- /dev/null +++ b/hosts/main/default.nix @@ -0,0 +1,64 @@ +{ inputs, pkgs, ... }: + +{ + imports = [ + ../../nix-os/core.nix + ../../nix-os/core-desktop.nix + ../../nix-os/nvidia.nix + ../../nix-os/docker.nix + ../../nix-os/razer.nix + ../../nix-os/desktopManagers/gnome.nix + ../../nix-os/displayManagers/gdm.nix + ../../nix-os/shell.nix + ../../nix-os/virtualization.nix + ../../nix-os/polkit/disable-shutdown.nix + ../../nix-os/locale.nix + ../../nix-os/adb.nix + ../../nix-os/account.nix + ../../nix-os/xdg-default-apps.nix + ../../nix-os/services/nix-binary-cache.nix + ../../nix-os/udev.nix + ../../nix-os/gnupg.nix + + "${inputs.nixos-vscode-server}" + ]; + + config = { + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "wroclaw-main"; + + services.xrdp.enable = true; + users.groups."tsusers".members = [ "wroclaw" ]; + + services.printing.drivers = with pkgs; [ + hplip + ]; + + # nixos-vscode-server module needs this + programs.nix-ld.enable = true; + services.vscode-server = { + enable = true; + extraRuntimeDependencies = with pkgs; [ + docker + ]; + }; + + services.pipewire.wireplumber.configPackages = [( + pkgs.stdenvNoCC.mkDerivation { + name = "wireplumber-config"; + src = ./wireplumber; + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out/share/wireplumber/wireplumber.conf.d + cp -r $src/* $out/share/wireplumber/wireplumber.conf.d + ''; + } + )]; + + services.printing.startWhenNeeded = false; + + system.stateVersion = "23.05"; + }; +} diff --git a/hosts/main/wireplumber/51-digital-output.conf b/hosts/main/wireplumber/51-digital-output.conf new file mode 100644 index 0000000..57bdff3 --- /dev/null +++ b/hosts/main/wireplumber/51-digital-output.conf @@ -0,0 +1,10 @@ +monitor.alsa.rules = [{ + matches = [{ + node.name = "alsa_output.pci-0000_00_1f.3.iec958-stereo" + }] + actions = { + update-props = { + node.description = "Digital Output" + } + } +}] diff --git a/hosts/main/wireplumber/51-hdmi-otuput.conf b/hosts/main/wireplumber/51-hdmi-otuput.conf new file mode 100644 index 0000000..265b78a --- /dev/null +++ b/hosts/main/wireplumber/51-hdmi-otuput.conf @@ -0,0 +1,10 @@ +monitor.alsa.rules = [{ + matches = [{ + node.name = "alsa_output.pci-0000_01_00.1.hdmi-stereo" + }] + actions = { + update-props = { + node.description = "Monitor speakers" + } + } +}] diff --git a/hosts/main/wireplumber/51-razerHeadphones-device.conf b/hosts/main/wireplumber/51-razerHeadphones-device.conf new file mode 100644 index 0000000..b159a49 --- /dev/null +++ b/hosts/main/wireplumber/51-razerHeadphones-device.conf @@ -0,0 +1,11 @@ +monitor.alsa.rules = [{ + matches = [{ + device.name = "alsa_card.usb-Razer_Razer_USB_Audio_Controller_000000000000000000000000-00" + }] + actions = { + update-props = { + device.description = "Headphones" + device.profile = "Pro Audio" + } + } +}] diff --git a/hosts/main/wireplumber/51-razerHeadphones-input.conf b/hosts/main/wireplumber/51-razerHeadphones-input.conf new file mode 100644 index 0000000..c24a599 --- /dev/null +++ b/hosts/main/wireplumber/51-razerHeadphones-input.conf @@ -0,0 +1,10 @@ +monitor.alsa.rules = [{ + matches = [{ + node.name = "alsa_input.usb-Razer_Razer_USB_Audio_Controller_000000000000000000000000-00.pro-input-0" + }] + actions = { + update-props = { + node.description = "Headphones" + } + } +}] diff --git a/hosts/main/wireplumber/51-razerHeadphones-output.conf b/hosts/main/wireplumber/51-razerHeadphones-output.conf new file mode 100644 index 0000000..11cb43e --- /dev/null +++ b/hosts/main/wireplumber/51-razerHeadphones-output.conf @@ -0,0 +1,22 @@ +monitor.alsa.rules = [ + { + matches = [{ + node.name = "alsa_output.usb-Razer_Razer_USB_Audio_Controller_000000000000000000000000-00.pro-output-0" + }] + actions = { + update-props = { + node.description = "Headphones (Chat)" + } + } + } + { + matches = [{ + node.name = "alsa_output.usb-Razer_Razer_USB_Audio_Controller_000000000000000000000000-00.pro-output-1" + }] + actions = { + update-props = { + node.description = "Headphones (Game)" + } + } + } +] diff --git a/lock.nix b/lock.nix index 930ea4e..2963614 100644 --- a/lock.nix +++ b/lock.nix @@ -4,7 +4,7 @@ sha256 = "1rq8mrlmbzpcbv9ys0x88alw30ks70jlmvnfr2j8v830yy5wvw7h"; }; nixpkgs = { - revision = "0c53b6b8c2a3e46c68e04417e247bba660689c9d"; - sha256 = "02ag4j9v48h861bakxf7nvcz85wl6dv8wvfj0v1r7v7j8jpwp8vg"; + revision = "05405724efa137a0b899cce5ab4dde463b4fd30b"; + sha256 = "06490pn22x9xl4chfx12iwdgx7nlbn14v8x05rnv2y1nancljisl"; }; } diff --git a/outputs.nix b/outputs.nix index aced032..f69f3bf 100644 --- a/outputs.nix +++ b/outputs.nix @@ -22,22 +22,22 @@ self = { filePaths = lib.pipe ./hosts [ builtins.readDir ( lib.filterAttrs (name: type: - # filter out non-nix files - type == "regular" - # filter out files that don't end in .nix - && lib.hasSuffix ".nix" name + ( # regular .nix files + (type == "regular" && lib.hasSuffix ".nix" name) + || # directories that contain a default.nix file + (type == "directory" && builtins.pathExists "${./hosts}/${name}/default.nix") + ) # filter out files that start with . && !lib.hasPrefix "." name )) - (lib.mapAttrsToList (name: _: name)) ]; nixosSystem = import "${inputs.nixpkgs}/nixos/lib/eval-config.nix"; in # mapped list of nix file paths to attrSet with initialized NixOS configurations, # whose names are derived from file names lib.pipe filePaths [ - (builtins.map (name: { - name = builtins.substring 0 (builtins.stringLength name - 4) name; + (builtins.mapAttrs (name: type: { + name = if type == "directory" then name else builtins.substring 0 (builtins.stringLength name - 4) name; value = nixosSystem { inherit lib; modules = [ @@ -53,6 +53,7 @@ self = { specialArgs = { inherit self inputs; }; }; })) + builtins.attrValues builtins.listToAttrs ]; };