From 5a7a3dda3083d2ad72af456f63f30d56459fa38c Mon Sep 17 00:00:00 2001 From: TheWanderingCrow Date: Wed, 25 Jun 2025 10:46:12 -0400 Subject: [PATCH] work on porting sway config over --- home/crow/common/optional/browsers/chrome.nix | 6 ++ .../crow/common/optional/browsers/default.nix | 6 ++ .../{core => optional/browsers}/firefox.nix | 0 home/crow/common/optional/comms/default.nix | 5 ++ .../crow/common/optional/desktops/default.nix | 1 + home/crow/common/optional/desktops/sway.nix | 5 ++ modules/home/default.nix | 4 + modules/home/monitors.nix | 79 +++++++++++++++++++ 8 files changed, 106 insertions(+) create mode 100644 home/crow/common/optional/browsers/chrome.nix create mode 100644 home/crow/common/optional/browsers/default.nix rename home/crow/common/{core => optional/browsers}/firefox.nix (100%) create mode 100644 home/crow/common/optional/comms/default.nix create mode 100644 home/crow/common/optional/desktops/default.nix create mode 100644 home/crow/common/optional/desktops/sway.nix create mode 100644 modules/home/default.nix create mode 100644 modules/home/monitors.nix diff --git a/home/crow/common/optional/browsers/chrome.nix b/home/crow/common/optional/browsers/chrome.nix new file mode 100644 index 0000000..c36e889 --- /dev/null +++ b/home/crow/common/optional/browsers/chrome.nix @@ -0,0 +1,6 @@ +{pkgs, ...}: { + programs.chromium = { + enable = true; + package = pkgs.ungoogled-chromium; + }; +} diff --git a/home/crow/common/optional/browsers/default.nix b/home/crow/common/optional/browsers/default.nix new file mode 100644 index 0000000..50a9ac9 --- /dev/null +++ b/home/crow/common/optional/browsers/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./firefox.nix + ./chrome.nix + ]; +} diff --git a/home/crow/common/core/firefox.nix b/home/crow/common/optional/browsers/firefox.nix similarity index 100% rename from home/crow/common/core/firefox.nix rename to home/crow/common/optional/browsers/firefox.nix diff --git a/home/crow/common/optional/comms/default.nix b/home/crow/common/optional/comms/default.nix new file mode 100644 index 0000000..71c8da9 --- /dev/null +++ b/home/crow/common/optional/comms/default.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = [ + pkgs.ferdium + ]; +} diff --git a/home/crow/common/optional/desktops/default.nix b/home/crow/common/optional/desktops/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/home/crow/common/optional/desktops/default.nix @@ -0,0 +1 @@ +{} diff --git a/home/crow/common/optional/desktops/sway.nix b/home/crow/common/optional/desktops/sway.nix new file mode 100644 index 0000000..e7e3846 --- /dev/null +++ b/home/crow/common/optional/desktops/sway.nix @@ -0,0 +1,5 @@ +{ + wayland.windowManager.sway = { + enable = true; + }; +} diff --git a/modules/home/default.nix b/modules/home/default.nix new file mode 100644 index 0000000..9e48608 --- /dev/null +++ b/modules/home/default.nix @@ -0,0 +1,4 @@ +{lib, ...}: { + imports = lib.custom.scanPaths ./.; +} + diff --git a/modules/home/monitors.nix b/modules/home/monitors.nix new file mode 100644 index 0000000..1f2a16e --- /dev/null +++ b/modules/home/monitors.nix @@ -0,0 +1,79 @@ +{ + lib, + config, + ... +}: { + options.monitors = lib.mkOption { + type = lib.types.listOf ( + lib.types.submodule { + options = { + name = lib.mkOption { + type = lib.types.str; + example = "DP-1"; + }; + primary = lib.mkOption { + type = lib.types.bool; + default = false; + }; + noBar = lib.mkOption { + type = lib.types.bool; + default = false; + }; + width = lib.mkOption { + type = lib.types.int; + example = 1920; + }; + height = lib.mkOption { + type = lib.types.int; + example = 1080; + }; + refreshRate = lib.mkOption { + type = lib.types.int; + default = 60; + }; + x = lib.mkOption { + type = lib.types.int; + default = 0; + }; + y = lib.mkOption { + type = lib.types.int; + default = 0; + }; + scale = lib.mkOption { + type = lib.types.number; + default = 1.0; + }; + transform = lib.mkOption { + type = lib.types.int; + default = 0; + }; + enabled = lib.mkOption { + type = lib.types.bool; + default = true; + }; + workspace = lib.mkOption { + type = lib.types.nullOr lib.types.str; + description = "Defines a workspace that should persist on this monitor."; + default = null; + }; + vrr = lib.mkOption { + type = lib.types.int; + description = "Variable Refresh Rate aka Adaptive Sync aka AMD FreeSync.\nValues are oriented towards hyprland's vrr values which are:\n0 = off, 1 = on, 2 = fullscreen only\nhttps://wiki.hyprland.org/Configuring/Variables/#misc"; + default = 0; + }; + }; + } + ); + default = []; + }; + config = { + assertions = [ + { + assertion = + ((lib.length config.monitors) != 0) + -> ((lib.length (lib.filter (m: m.primary) config.monitors)) == 1); + message = "Exactly one monitor must be set to primary."; + } + ]; + }; +}