diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 00000000..86370a1e --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,23 @@ +// Folder-specific settings +// +// For a full list of overridable settings, and general information on folder-specific settings, +// see the documentation: https://zed.dev/docs/configuring-zed#settings-files +{ + "lsp": { + "nixd": { + "settings": { + "options": { + "nixos": { + "expr": "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.zaphod.options" + }, + "home-manager": { + "expr": "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.zaphod.options.home-manager.users.type.getSubOptions []" + }, + "flake-parts": { + "expr": "(builtins.getFlake (builtins.toString ./.)).debug.options" + } + } + } + } + } +} diff --git a/flake.lock b/flake.lock index 848b3747..0602bb60 100644 --- a/flake.lock +++ b/flake.lock @@ -322,6 +322,24 @@ "type": "github" } }, + "flake-utils_3": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "git-hooks": { "inputs": { "flake-compat": [ @@ -782,6 +800,22 @@ "type": "github" } }, + "nixpkgs_4": { + "locked": { + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "agenix": "agenix", @@ -808,7 +842,8 @@ "nixpkgs-stalwart-fix": "nixpkgs-stalwart-fix", "stable": "stable", "systems": "systems", - "tangled": "tangled" + "tangled": "tangled", + "vicinae": "vicinae" } }, "sqlite-lib-src": { @@ -870,6 +905,21 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tangled": { "inputs": { "flake-compat": "flake-compat_2", @@ -896,6 +946,25 @@ "type": "git", "url": "https://tangled.org/@tangled.org/core" } + }, + "vicinae": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1759946048, + "narHash": "sha256-cyL+LxzEQNPJ7s9y4g1HfUlgoIS0YzcAlyXP6nrKBnU=", + "owner": "vicinaehq", + "repo": "vicinae", + "rev": "96e7405c95f7967ed55689a1d563a10f5e1f24e7", + "type": "github" + }, + "original": { + "owner": "vicinaehq", + "repo": "vicinae", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index cceebceb..ce6fe518 100644 --- a/flake.nix +++ b/flake.nix @@ -6,11 +6,13 @@ "https://cache.nixos.org" "https://nix-community.cachix.org" "https://install.determinate.systems" + "https://vicinae.cachix.org" ]; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "cache.flakehub.com-3:hJuILl5sVK4iKm86JzgdXW12Y2Hwd5G07qKtHTOcDCM=" + "vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc=" ]; cores = 0; max-jobs = 2; @@ -119,6 +121,9 @@ url = "git+https://git.pyrox.dev/pyrox/pkgs"; inputs.nixpkgs.follows = "nixpkgs"; }; + vicinae = { + url = "github:vicinaehq/vicinae"; + }; tangled = { url = "git+https://tangled.org/@tangled.org/core"; }; @@ -172,5 +177,7 @@ }; formatter = pkgs.nixfmt; }; + # Enable debugging for nixd + debug = true; }; } diff --git a/homeModules/all-modules.nix b/homeModules/all-modules.nix index d804ed8c..b523be13 100644 --- a/homeModules/all-modules.nix +++ b/homeModules/all-modules.nix @@ -11,5 +11,6 @@ inputs.nix-index-database.homeModules.nix-index inputs.ctp.homeModules.catppuccin + inputs.vicinae.homeManagerModules.default ]; } diff --git a/homeModules/profiles/gui/default.nix b/homeModules/profiles/gui/default.nix index d8b5e643..20c0541c 100644 --- a/homeModules/profiles/gui/default.nix +++ b/homeModules/profiles/gui/default.nix @@ -12,9 +12,6 @@ in { options.py.profiles.gui.enable = mkEnableOption "GUI Profile"; config = lib.mkIf cfg.enable { - home.sessionVariables = { - XDG_CURRENT_DESKTOP = "sway"; - }; py = { programs = { chromium.enable = mkDefault true; @@ -29,9 +26,10 @@ in }; services = { gpg-agent.enable = mkDefault true; - kanshi.enable = mkDefault true; + kanshi.enable = mkDefault false; kdeconnect.enable = mkDefault true; - mako.enable = mkDefault true; + mako.enable = mkDefault false; + vicinae.enable = mkDefault true; swayidle.enable = mkDefault true; syncthing.enable = mkDefault false; }; @@ -39,15 +37,14 @@ in home.packages = with pkgs; [ chatterino2 equibop - grim krita libappindicator libappindicator-gtk3 lutris prismlauncher pwvucontrol + hyprshot satty - slurp ueberzug (olympus.overrideAttrs (_: { celesteWrapper = osConfig.programs.steam.package.run; diff --git a/homeModules/programs/wlogout/default.nix b/homeModules/programs/wlogout/default.nix index a0cb6578..7029c38c 100644 --- a/homeModules/programs/wlogout/default.nix +++ b/homeModules/programs/wlogout/default.nix @@ -40,7 +40,7 @@ in } { label = "lock"; - action = lib.getExe pkgs.swaylock-effects; + action = "hyprlock"; text = "Lock"; keybind = "l"; } diff --git a/homeModules/programs/wlogout/style.nix b/homeModules/programs/wlogout/style.nix index 3a594558..e0cf4f1e 100644 --- a/homeModules/programs/wlogout/style.nix +++ b/homeModules/programs/wlogout/style.nix @@ -7,7 +7,7 @@ in background-image: none; } window { - background-image: image(url("/home/thehedgehog/bgs/ctp-waves.png"), url("/home/thehedgehog/bgs/ctp-waves.png")); + background-image: image(url("/home/thehedgehog/bgs/wallpapers/xenia/chimmie_valentine_xenia.png"), url("/home/thehedgehog/bgs/wallpapers/xenia/chimmie_valentine_xenia.png")); background-size: cover; } button { diff --git a/homeModules/services/default.nix b/homeModules/services/default.nix index f899236c..38ddc905 100644 --- a/homeModules/services/default.nix +++ b/homeModules/services/default.nix @@ -6,5 +6,6 @@ ./mako ./swayidle ./syncthing + ./vicinae ]; } diff --git a/homeModules/services/mako/default.nix b/homeModules/services/mako/default.nix index f7dcf364..f9962353 100644 --- a/homeModules/services/mako/default.nix +++ b/homeModules/services/mako/default.nix @@ -1,12 +1,14 @@ { lib, config, ... }: let cfg = config.py.services.mako; + hl = config.wayland.windowManager.hyprland; in { options.py.services.mako.enable = lib.mkEnableOption "mako"; # avoid IFD config.catppuccin.mako.enable = false; - config.services.mako = lib.mkIf cfg.enable { + # Hyprpanel with hyprland uses its own notification daemon + config.services.mako = lib.mkIf (cfg.enable && !hl.enable) { enable = true; settings = { diff --git a/homeModules/services/swayidle/default.nix b/homeModules/services/swayidle/default.nix index 4faa0a18..223c19cf 100644 --- a/homeModules/services/swayidle/default.nix +++ b/homeModules/services/swayidle/default.nix @@ -10,7 +10,7 @@ in { options.py.services.swayidle.enable = lib.mkEnableOption "swayidle"; config.services.swayidle = lib.mkIf cfg.enable { - enable = true; + enable = false; events = [ { event = "lock"; diff --git a/homeModules/services/vicinae/default.nix b/homeModules/services/vicinae/default.nix new file mode 100644 index 00000000..d551786b --- /dev/null +++ b/homeModules/services/vicinae/default.nix @@ -0,0 +1,15 @@ +{ + config, + lib, + ... +}: +let + cfg = config.py.services.vicinae; +in +{ + options.py.services.vicinae.enable = lib.mkEnableOption "Vicinae"; + config.services.vicinae = lib.mkIf cfg.enable { + enable = true; + autoStart = true; + }; +} diff --git a/homeModules/theming/default.nix b/homeModules/theming/default.nix index 6a06e041..4280fe21 100644 --- a/homeModules/theming/default.nix +++ b/homeModules/theming/default.nix @@ -15,8 +15,9 @@ in }; home.pointerCursor = mkIf pro.gui.enable { package = pkgs.catppuccin-cursors.mochaBlue; - name = "Catppuccin-Mocha-Blue"; + name = "catppuccin-mocha-blue-cursors"; gtk.enable = true; + hyprcursor.enable = true; }; gtk = mkIf pro.gui.enable { enable = true; diff --git a/homeModules/wayland/default.nix b/homeModules/wayland/default.nix index 1d4bc9ae..1aade3a1 100644 --- a/homeModules/wayland/default.nix +++ b/homeModules/wayland/default.nix @@ -4,5 +4,6 @@ ./keybindings.nix ./waybar.nix ./swaylock.nix + ./hyprland ]; } diff --git a/homeModules/wayland/hyprland/default.nix b/homeModules/wayland/hyprland/default.nix new file mode 100644 index 00000000..abe149b4 --- /dev/null +++ b/homeModules/wayland/hyprland/default.nix @@ -0,0 +1,35 @@ +{ + pkgs, + config, + osConfig, + lib, + ... +}: +let + c = osConfig.py.programs.hyprland; + cfg = config.wayland.windowManager.hyprland; +in +{ + imports = [ + ./hyprpanel.nix + ./services.nix + ./hypridle.nix + ./hyprlock.nix + ]; + config = { + catppuccin.hyprland.enable = c.enable; + wayland.windowManager.hyprland = { + enable = c.enable; + # Per https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.hyprland.package + package = null; + systemd = { + enable = true; + enableXdgAutostart = true; + }; + settings = import ./settings.nix; + plugins = [ + pkgs.hyprlandPlugins.hy3 + ]; + }; + }; +} diff --git a/homeModules/wayland/hyprland/env.nix b/homeModules/wayland/hyprland/env.nix new file mode 100644 index 00000000..65dbde47 --- /dev/null +++ b/homeModules/wayland/hyprland/env.nix @@ -0,0 +1,9 @@ +{ + env = [ + "WLR_NO_HARDWARE_CURSORS, 1" + "WLR_RENDERER_ALLOW_SOFTWARE, 1" + "NIXOS_OZONE_WL, 1" + "XDG_SESSION_TYPE, wayland" + "QT_QPA_PLATFORM, wayland" + ]; +} diff --git a/homeModules/wayland/hyprland/hypridle.nix b/homeModules/wayland/hyprland/hypridle.nix new file mode 100644 index 00000000..7b9e5da0 --- /dev/null +++ b/homeModules/wayland/hyprland/hypridle.nix @@ -0,0 +1,18 @@ +{ + config, + lib, + ... +}: +let + cfg = config.wayland.windowManager.hyprland; +in +{ + config.services.hypridle = lib.mkIf cfg.enable { + enable = false; + settings = { + general = { + lock_cmd = "hyprlock"; + }; + }; + }; +} diff --git a/homeModules/wayland/hyprland/hyprlock.nix b/homeModules/wayland/hyprland/hyprlock.nix new file mode 100644 index 00000000..d127395d --- /dev/null +++ b/homeModules/wayland/hyprland/hyprlock.nix @@ -0,0 +1,93 @@ +{ + config, + lib, + ... +}: +let + cfg = config.wayland.windowManager.hyprland; +in +{ + config.catppuccin.hyprlock.enable = cfg.enable; + config.catppuccin.hyprlock.useDefaultConfig = false; + config.programs.hyprlock = lib.mkIf cfg.enable { + enable = true; + settings = { + general = { + hide_cursor = true; + immediate_render = true; + text_trim = true; + }; + }; + extraConfig = '' + $accent = $mauve + $accentAlpha = $mauveAlpha + $font = Blex Mono Nerd Font + + # BACKGROUND + background { + monitor = + path = $HOME/bgs/wallpapers/xenia/chimmie_valentine_xenia.png + blur_passes = 1 + color = $base + } + + # TIME + label { + monitor = + text = $TIME + color = $text + font_size = 90 + font_family = $font + position = -30, 0 + halign = right + valign = top + } + + # DATE + label { + monitor = + text = cmd[update:43200000] date +"%A, %d %B %Y" + color = $text + font_size = 25 + font_family = $font + position = -30, -150 + halign = right + valign = top + } + + # USER AVATAR + image { + monitor = + path = $HOME/.face + size = 100 + border_color = $accent + position = 0, 75 + halign = center + valign = center + } + + # INPUT FIELD + input-field { + monitor = + size = 300, 60 + outline_thickness = 4 + dots_size = 0.2 + dots_spacing = 0.2 + dots_center = true + outer_color = $accent + inner_color = $surface0 + font_color = $text + fade_on_empty = false + placeholder_text = 󰌾 Logged in as $USER + hide_input = false + check_color = $accent + fail_color = $red + fail_text = $FAIL ($ATTEMPTS) + capslock_color = $yellow + position = 0, -47 + halign = center + valign = center + } + ''; + }; +} diff --git a/homeModules/wayland/hyprland/hyprpanel.nix b/homeModules/wayland/hyprland/hyprpanel.nix new file mode 100644 index 00000000..6b9778d6 --- /dev/null +++ b/homeModules/wayland/hyprland/hyprpanel.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + ... +}: +let + cfg = config.wayland.windowManager.hyprland; +in +{ + programs.hyprpanel = lib.mkIf cfg.enable { + enable = true; + systemd.enable = true; + }; +} diff --git a/homeModules/wayland/hyprland/keybindings.nix b/homeModules/wayland/hyprland/keybindings.nix new file mode 100644 index 00000000..178cb4eb --- /dev/null +++ b/homeModules/wayland/hyprland/keybindings.nix @@ -0,0 +1,98 @@ +{ + "$mod" = "SUPER"; + "$satty" = "satty -f -"; + + binde = [ + # Media binds that can be held and repeated + ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" + ", XF86MonBrightnessUp, exec, brightnessctl set +5%" + ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ]; + + bind = [ + "SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox" + "$mod, Return, exec, ghostty" + "$mod, X, exec, wlogout" + "$mod, D, exec, vicinae toggle" + "SUPER_SHIFT, E, exit" + + # Media Binds + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + + # Workspace binds + "$mod, 1, workspace, 01" + "SUPER_SHIFT, 1, hy3:movetoworkspace, 01, follow, warp" + "$mod, 2, workspace, 02" + "SUPER_SHIFT, 2, hy3:movetoworkspace, 02, follow, warp" + "$mod, 3, workspace, 03" + "SUPER_SHIFT, 3, hy3:movetoworkspace, 03, follow, warp" + "$mod, 4, workspace, 04" + "SUPER_SHIFT, 4, hy3:movetoworkspace, 04, follow, warp" + "$mod, 5, workspace, 05" + "SUPER_SHIFT, 5, hy3:movetoworkspace, 05, follow, warp" + "$mod, 6, workspace, 06" + "SUPER_SHIFT, 6, hy3:movetoworkspace, 06, follow, warp" + "$mod, 7, workspace, 07" + "SUPER_SHIFT, 7, hy3:movetoworkspace, 07, follow, warp" + "$mod, 8, workspace, 08" + "SUPER_SHIFT, 8, hy3:movetoworkspace, 08, follow, warp" + "$mod, 9, workspace, 09" + "SUPER_SHIFT, 9, hy3:movetoworkspace, 09, follow, warp" + "$mod, 0, workspace, 10" + "SUPER_SHIFT, 0, hy3:movetoworkspace, 10, follow, warp" + # Scratchpad + "SUPER_SHIFT, -, movetoworkspace, special" + "$mod, -, togglespecialworkspace" + + # Window Management + "SUPER_SHIFT, Up, hy3:movewindow, up, once, visible" + "SUPER_SHIFT, K, hy3:movewindow, up, once, visible" + "$mod, Up, hy3:movefocus, up, visible, warp" + "$mod, K, hy3:movefocus, up, visible, warp" + + "SUPER_SHIFT, Right, hy3:movewindow, right, once, visible" + "SUPER_SHIFT, L, hy3:movewindow, right, once, visible" + "$mod, Right, hy3:movefocus, right, visible, warp" + "$mod, L, hy3:movefocus, right, visible, warp" + + "SUPER_SHIFT, Left, hy3:movewindow, left, once, visible" + "SUPER_SHIFT, H, hy3:movewindow, left, once, visible" + "$mod, Left, hy3:movefocus, left, visible, warp" + "$mod, H, hy3:movefocus, left, visible, warp" + + "SUPER_SHIFT, Down, hy3:movewindow, down, once, visible" + "SUPER_SHIFT, J, hy3:movewindow, down, once, visible" + "$mod, Down, hy3:movefocus, down, visible, warp" + "$mod, J, hy3:movefocus, down, visible, warp" + + "SUPER_SHIFT, Q, killactive" + "$mod, F, fullscreen, 0" + "$mod, Space, hy3:togglefocuslayer" + "SUPER_SHIFT, Space, togglefloating, active" + + # Screenshots + "SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty" + "SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty" + ]; + + bindm = [ + "$mod, mouse:272, movewindow" + ]; + + # Unbind a bunch of default keybinds + unbind = [ + "$mod, C" + "$mod, E" + "$mod, J" + "$mod, M" + "$mod, P" + "$mod, Q" + "$mod, R" + "$mod, V" + ]; +} diff --git a/homeModules/wayland/hyprland/monitors.nix b/homeModules/wayland/hyprland/monitors.nix new file mode 100644 index 00000000..77c7e20c --- /dev/null +++ b/homeModules/wayland/hyprland/monitors.nix @@ -0,0 +1,8 @@ +{ + monitor = [ + "eDP-1, 2560x1600@165, 0x0, 1, vrr, 1" + "desc:Acer Technologies SA241Y 0x1497CF17, preferred, 2560x0, 1" + # Fallback for random monitors + ", preferred, auto, 1" + ]; +} diff --git a/homeModules/wayland/hyprland/plugins.nix b/homeModules/wayland/hyprland/plugins.nix new file mode 100644 index 00000000..2e638274 --- /dev/null +++ b/homeModules/wayland/hyprland/plugins.nix @@ -0,0 +1,7 @@ +{ + plugin = { + hy3 = { + no_gaps_when_only = 1; + }; + }; +} diff --git a/homeModules/wayland/hyprland/services.nix b/homeModules/wayland/hyprland/services.nix new file mode 100644 index 00000000..9347500f --- /dev/null +++ b/homeModules/wayland/hyprland/services.nix @@ -0,0 +1,10 @@ +{ + config, + ... +}: +let + cfg = config.wayland.windowManager.hyprland; +in +{ + services.hyprpolkitagent.enable = cfg.enable; +} diff --git a/homeModules/wayland/hyprland/settings.nix b/homeModules/wayland/hyprland/settings.nix new file mode 100644 index 00000000..f93f488d --- /dev/null +++ b/homeModules/wayland/hyprland/settings.nix @@ -0,0 +1,22 @@ +let + keybinds = import ./keybindings.nix; + monitors = import ./monitors.nix; + variables = import ./variables.nix; + plugins = import ./plugins.nix; + env = import ./env.nix; + windowrules = import ./windowrules.nix; +in +{ + exec-once = [ + "hyprpanel" + ]; + animation = [ + "global, 1, 4, default" + ]; +} +// keybinds +// monitors +// variables +// plugins +// env +// windowrules diff --git a/homeModules/wayland/hyprland/variables.nix b/homeModules/wayland/hyprland/variables.nix new file mode 100644 index 00000000..fb2407d6 --- /dev/null +++ b/homeModules/wayland/hyprland/variables.nix @@ -0,0 +1,33 @@ +# https://wiki.hypr.land/Configuring/Variables +{ + general = { + gaps_in = 1; + gaps_out = 1; + gaps_workspaces = 80; + layout = "hy3"; + resize_on_border = true; + }; + decoration = { + blur.enabled = false; + shadow.enabled = false; + }; + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + font_family = "Inter"; + mouse_move_focuses_monitor = true; + }; + input = { + kb_options = "caps:escape"; + repeat_delay = 300; + touchpad = { + scroll_factor = 1.5; + tap_button_map = "lmr"; + tap-and-drag = false; + }; + }; + ecosystem = { + no_update_news = true; + no_donation_nag = true; + }; +} diff --git a/homeModules/wayland/hyprland/windowrules.nix b/homeModules/wayland/hyprland/windowrules.nix new file mode 100644 index 00000000..753909c1 --- /dev/null +++ b/homeModules/wayland/hyprland/windowrules.nix @@ -0,0 +1,6 @@ +{ + windowrule = [ + "immediate, content game, title:Celeste" + "tile, title:Melvor Idle" + ]; +} diff --git a/homeModules/wayland/waybar.nix b/homeModules/wayland/waybar.nix index b8c54b0f..82bdf220 100644 --- a/homeModules/wayland/waybar.nix +++ b/homeModules/wayland/waybar.nix @@ -6,16 +6,17 @@ }: let cfg = config.py.profiles.gui; + sway = config.wayland.windowManager.sway; in { config = { - xdg.configFile."waybar/mocha.css" = lib.mkIf cfg.enable { + xdg.configFile."waybar/mocha.css" = lib.mkIf (cfg.enable && sway.enable) { source = ./waybar-mocha.css; recursive = false; }; catppuccin.waybar.enable = false; - programs.waybar = lib.mkIf cfg.enable { - enable = lib.mkDefault true; + programs.waybar = lib.mkIf (cfg.enable && sway.enable) { + enable = lib.mkDefault false; systemd.enable = true; systemd.target = "sway-session.target"; style = ./waybar-style.css; diff --git a/hosts/default.nix b/hosts/default.nix index 29df6d8a..ecd11ce2 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -11,6 +11,7 @@ inputs.self.nixosModules.defaultConfig inputs.self.nixosModules.defaultUsers inputs.self.nixosModules.firefox + inputs.self.nixosModules.hyprland inputs.self.nixosModules.forgejo-runner inputs.self.nixosModules.hm-pyrox inputs.self.nixosModules.hm-thehedgehog diff --git a/hosts/zaphod/default.nix b/hosts/zaphod/default.nix index 49327491..7fa7ebbe 100644 --- a/hosts/zaphod/default.nix +++ b/hosts/zaphod/default.nix @@ -35,6 +35,7 @@ dconf.enable = true; firefox.enable = true; fish.enable = true; + hyprland.enable = true; less.enable = true; neovim.enable = true; noisetorch.enable = true; diff --git a/hosts/zaphod/programs/sway.nix b/hosts/zaphod/programs/sway.nix index 605b1df1..5ef3cabb 100644 --- a/hosts/zaphod/programs/sway.nix +++ b/hosts/zaphod/programs/sway.nix @@ -1,11 +1,6 @@ -{ pkgs, ... }: { programs.sway = { - enable = true; - extraPackages = with pkgs; [ - swaylock-effects - swayidle - ]; + enable = false; wrapperFeatures.base = true; wrapperFeatures.gtk = true; }; diff --git a/img.png b/img.png new file mode 100644 index 00000000..e69de29b diff --git a/nixosModules/default.nix b/nixosModules/default.nix index e8c9f4a5..0990e02e 100644 --- a/nixosModules/default.nix +++ b/nixosModules/default.nix @@ -11,6 +11,7 @@ # Programs chromium = import ./programs/chromium; firefox = import ./programs/firefox; + hyprland = import ./programs/hyprland; miscPrograms = import ./programs/misc; neovim = import ./programs/neovim; diff --git a/nixosModules/homes/.default.nix.bak b/nixosModules/homes/.default.nix.bak deleted file mode 100644 index c2219e52..00000000 --- a/nixosModules/homes/.default.nix.bak +++ /dev/null @@ -1,123 +0,0 @@ -{ - lib, - withSystem, - inputs, - ... -}: -let - mkHM = withSystem "x86_64-linux" ( - { pkgs, system, ... }: - extra: - inputs.home-manager.lib.homeManagerConfiguration ( - lib.mergeAttrs { - inherit pkgs; - extraSpecialArgs = { inherit inputs system; }; - } extra - ) - ); - defaultModules = [ - inputs.ctp.homeModules.default - inputs.self.homeModules.theming - inputs.self.homeModules.programs - inputs.self.homeModules.services - ]; - -in -{ - flake.homeConfigurations = { - marvin-pyrox = mkHM { - modules = [ - inputs.self.homeModules.profiles - ./pyrox - { - py.profiles.server.enable = true; - } - ] - ++ defaultModules; - }; - marvin-thehedgehog = mkHM { - modules = [ - inputs.self.homeModules.profiles - ./thehedgehog - { - py.profiles.server.enable = true; - } - ] - ++ defaultModules; - }; - prefect-pyrox = mkHM { - modules = [ - inputs.self.homeModules.profiles - ./pyrox - { - py.profiles.server.enable = true; - } - ] - ++ defaultModules; - }; - prefect-thehedgehog = mkHM { - modules = [ - inputs.self.homeModules.profiles - ./thehedgehog - { - py.profiles.server.enable = true; - } - ] - ++ defaultModules; - }; - thought-pyrox = mkHM { - modules = [ - inputs.self.homeModules.profiles - ./pyrox - { - py.profiles.server.enable = true; - } - ] - ++ defaultModules; - }; - thought-thehedgehog = mkHM { - modules = [ - inputs.self.homeModules.profiles - ./thehedgehog - { - py.profiles.server.enable = true; - } - ] - ++ defaultModules; - }; - zaphod-pyrox = withSystem "x86_64-linux" ( - { pkgs, ... }: - inputs.home-manager.lib.homeManagerConfiguration { - inherit pkgs; - modules = [ - inputs.self.homeModules.profiles - { - imports = [ - ./pyrox - "${inputs.self}/homeConfigurations/pyrox@zaphod" - ]; - py.profiles.desktop.enable = true; - } - ] - ++ defaultModules; - } - ); - zaphod-thehedgehog = withSystem "x86_64-linux" ( - { pkgs, ... }: - inputs.home-manager.lib.homeManagerConfiguration { - inherit pkgs; - modules = [ - inputs.self.homeModules.profiles - { - imports = [ - ./thehedgehog - "${inputs.self}/homeConfigurations/thehedgehog@zaphod" - ]; - py.profiles.desktop.enable = true; - } - ] - ++ defaultModules; - } - ); - }; -} diff --git a/nixosModules/programs/hyprland/default.nix b/nixosModules/programs/hyprland/default.nix new file mode 100644 index 00000000..6494a90a --- /dev/null +++ b/nixosModules/programs/hyprland/default.nix @@ -0,0 +1,20 @@ +{ + config, + lib, + ... +}: +let + cfg = config.py.programs.hyprland; +in +{ + options = { + py.programs.hyprland.enable = lib.mkEnableOption "Hyprland"; + }; + config = lib.mkIf cfg.enable { + programs.hyprland = { + enable = true; + xwayland.enable = true; + }; + programs.hyprlock.enable = cfg.enable; + }; +}