diff --git a/hardware/displays.nix b/hardware/displays.nix deleted file mode 100644 index 16e0547..0000000 --- a/hardware/displays.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - displays = { - enable = true; - displays = { - "hp" = { - description = "HP Inc. HP 24x 1CR9500W9Q"; - resolution = { - x = 1920; - y = 1080; - freq = 144; - }; - position.x = 0; - position.y = 360; - }; - "asus" = { - resolution = { - x = 1920; - y = 1080; - freq = 60; - }; - position = { - x = 1920; - y = 0; - }; - rotation = 1; - }; - }; - }; -} diff --git a/hardware/zenix.nix b/hardware/zenix.nix index 34cbac3..c4316e5 100644 --- a/hardware/zenix.nix +++ b/hardware/zenix.nix @@ -88,25 +88,4 @@ in { }; } ]; - - displays = { - displays."hp" = { - enable = true; - name = "DP-1"; - wallpaper = ../images/demonslayer.png; - workspaces = { - start = 1; - end = 5; - }; - }; - displays."asus" = { - enable = true; - name = "HDMI-A-1"; - wallpaper = ../images/nier2.jpg; - workspaces = { - start = 6; - end = 10; - }; - }; - }; } diff --git a/home/desktop/hyprland/default.nix b/home/desktop/hyprland/default.nix index 07932db..7d4d0d4 100644 --- a/home/desktop/hyprland/default.nix +++ b/home/desktop/hyprland/default.nix @@ -10,6 +10,7 @@ in { (import ../utils/swaylock.nix) (import ../utils/swayidle.nix) (import ../utils/waybar.nix) + (import ../utils/display.nix) ]; xdg.portal = { enable = true; diff --git a/home/desktop/utils/display.nix b/home/desktop/utils/display.nix new file mode 100644 index 0000000..1cebd7e --- /dev/null +++ b/home/desktop/utils/display.nix @@ -0,0 +1,7 @@ +{ + pkgs, ... +}: { + home.packages = with pkgs; [wlr-randr nwg-displays]; + + wayland.windowManager.hyprland.settings.source = ["~/.config/hypr/monitors.conf"]; +} diff --git a/nixos/default.nix b/nixos/default.nix index 9e25aa3..ea77baa 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -8,10 +8,6 @@ }: let user = config.user; in { - imports = [ - ./modules/display.nix - ]; - nix = { settings = { experimental-features = ["nix-command" "flakes"]; diff --git a/nixos/modules/display.nix b/nixos/modules/display.nix deleted file mode 100644 index 9074996..0000000 --- a/nixos/modules/display.nix +++ /dev/null @@ -1,197 +0,0 @@ -{ - lib, - pkgs, - config, - ... -}: -with lib; let - user = config.user; - - cfg = config.displays; - - renderDisplaysForHyprland = displays: (map displayHyprlandSetting (builtins.filter (d: d.enable) displays)); - - swaybgJob = displays: { - Unit = { - Description = "SwayBG"; - }; - Service = { - ExecStart = - "${pkgs.swaybg}/bin/swaybg " - + builtins.concatStringsSep " " (map swaybgCmd displays); - }; - Install = { - WantedBy = ["graphical-session.target"]; - }; - }; - - swaybgCmd = display: - if (display.enable && display ? wallpaper && display.wallpaper != null) - then "-o ${display.name} -i ${display.wallpaper} -m fill" - else ""; - - displayHyprlandSetting = display: - specificDisplay display - + ", " - + resToString display.resolution - + ", " - + positionToHyprlandString display.position - + ", " - + toString display.scaling - + ", " - + "transform," - + toString display.rotation; - - specificDisplay = display: - if display.description == "" - then display.name - else "desc:" + display.description; - - positionToHyprlandString = { - x, - y, - }: - if (x == -1 || y == -1) - then "auto" - else toString x + "x" + toString y; - - renderDisplaysForSway = displays: - listToAttrs (map displaySwaySetting (builtins.filter (d: d.enable) displays)); - - displaySwaySetting = display: { - name = display.name; - value = let - res = display.resolution; - in - { - mode = - mkIf (!resUnset res) - "${toString res.x}x${toString res.y}@${toString res.freq}Hz"; - scale = toString display.scaling; - } - // lib.mkIf (display ? wallpaper && display.wallpaper != null) { - bg = "${display.wallpaper} fill"; - }; - }; - - resolutionType = types.submodule { - options = { - x = mkOption { - description = "x"; - type = types.int; - default = 0; - }; - y = mkOption { - description = "y"; - type = types.int; - default = 0; - }; - freq = mkOption { - description = "frequency"; - type = types.int; - default = 0; - }; - }; - }; - - displayType = types.submodule { - options = { - enable = mkEnableOption "enable this display"; - name = mkOption { - description = "name of the display"; - default = ""; - }; - description = mkOption { - description = "description of display from hyprctl monitors"; - default = ""; - }; - scaling = mkOption { - type = types.float; - default = 1.0; - }; - rotation = mkOption { - type = types.int; - default = 0; - }; - resolution = mkOption { - description = "res"; - type = resolutionType; - default = {}; - }; - position.x = mkOption { - default = -1; - type = types.int; - }; - position.y = mkOption { - default = -1; - type = types.int; - }; - wallpaper = mkOption { - description = "path to wallpaper"; - default = null; - }; - workspaces = mkOption { - default = {}; - type = types.submodule { - options = { - start = mkOption { - type = types.int; - default = 1; - }; - end = mkOption { - type = types.int; - default = 1; - }; - }; - }; - }; - }; - }; - - resUnset = res: (res.x == 0 || res.y == 0 || res.freq == 0); - - resToString = res: - if resUnset res - then "preferred" - else "${toString res.x}x${toString res.y}@${toString res.freq}"; - - waybarWorkspaceConf = monitors: (map (display: { - ${display.name} = display.workspaces.start; - }) - monitors); - - renderWorkspacesForHyprland = displays: (map hyprWorkspaceSetting displays); - - hyprWorkspaceSetting = display: - specificDisplay display - + ", " - + toString display.workspaces.start; -in { - options.displays = { - enable = mkEnableOption "manage displays"; - displays = mkOption { - type = types.attrsOf displayType; - default = {}; - }; - }; - - config = mkIf cfg.enable { - home-manager.users.${user}.imports = [ - { - programs.waybar.settings.mainBar."hyprland/workspaces".persistent_workspaces = waybarWorkspaceConf (attrValues cfg.displays); - - systemd.user.services.swaybg = swaybgJob (builtins.attrValues cfg.displays); - - wayland.windowManager = mkIf (cfg.displays != {}) { - hyprland.settings = { - monitor = renderDisplaysForHyprland (attrValues cfg.displays); - workspace = renderWorkspacesForHyprland (attrValues cfg.displays); - }; - - sway.config.output = - renderDisplaysForSway (attrValues cfg.displays); - }; - } - ]; - }; -} diff --git a/nixos/programs/anki.nix b/nixos/programs/anki.nix index e1e1106..08b70c1 100644 --- a/nixos/programs/anki.nix +++ b/nixos/programs/anki.nix @@ -1,12 +1,12 @@ -{ - ... -}: { +{...}: { services.anki-sync-server = { enable = true; address = "100.65.29.110"; - users = [{ + users = [ + { username = "tristan"; password = "password"; - } ]; + } + ]; }; }