diff --git a/flake.nix b/flake.nix index ba55a23..d95658d 100644 --- a/flake.nix +++ b/flake.nix @@ -10,8 +10,10 @@ # Also see the 'unstable-packages' overlay at 'overlays/default.nix'. # Home manager - home-manager.url = "github:nix-community/home-manager/release-23.11"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; + home-manager = { + url = "github:nix-community/home-manager/release-23.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; # TODO: Add any other flake you might need # hardware.url = "github:nixos/nixos-hardware"; @@ -19,6 +21,21 @@ # Shameless plug: looking for a way to nixify your themes and make # everything match nicely? Try nix-colors! # nix-colors.url = "github:misterio77/nix-colors"; + + hyprland = { + url = "github:hyprwm/hyprland"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + hyprwm-contrib = { + url = "github:hyprwm/contrib"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + hyprland-plugins = { + url = "github:hyprwm/hyprland-plugins"; + inputs.hyprland.follows = "hyprland"; + }; }; outputs = { diff --git a/home-manager/features/desktop/common/default.nix b/home-manager/features/desktop/common/default.nix new file mode 100644 index 0000000..3c7e7e7 --- /dev/null +++ b/home-manager/features/desktop/common/default.nix @@ -0,0 +1,15 @@ +{lib, pkgs, config, ...}: { + imports = [ + + ]; + + dconf.settings."org/gnome/desktop/interface".color-scheme = + if config.colorscheme.variant == "dark" + then "prefer-dark" + else if config.colorscheme.variant == "light" + then "prefer-light" + else "default"; + + xdg.portal.enable = true; + +} diff --git a/home-manager/features/desktop/common/wayland-wm/default.nix b/home-manager/features/desktop/common/wayland-wm/default.nix new file mode 100644 index 0000000..4750e67 --- /dev/null +++ b/home-manager/features/desktop/common/wayland-wm/default.nix @@ -0,0 +1,29 @@ +{pkgs, ...}: { + imports = []; + + xdg.mimeApps.enable = true; + home.packages = with pkgs; [ + grim + gtk3 + imv + mimeo + primary-xwayland + pulseaudio + slurp + waypipe + wf-recorder + wl-clipboard + wl-mirror + wl-mirror-pick + xdg-utils + ydotool + ]; + + home.sessionVariables = { + MOZ_ENABLE_WAYLAND = 1; + QT_QPA_PLATFORM = "wayland"; + LIBSEAT_BACKEND = "logind"; + }; + + xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-wlr]; +} diff --git a/home-manager/features/desktop/gnome/default.nix b/home-manager/features/desktop/gnome/default.nix new file mode 100644 index 0000000..65b3071 --- /dev/null +++ b/home-manager/features/desktop/gnome/default.nix @@ -0,0 +1 @@ +{imports = [../common];} diff --git a/home-manager/features/desktop/hyprland/default.nix b/home-manager/features/desktop/hyprland/default.nix new file mode 100644 index 0000000..10efc9f --- /dev/null +++ b/home-manager/features/desktop/hyprland/default.nix @@ -0,0 +1,40 @@ +{ + lib, + config, + pkgs, + ... +}: let + hyprland = pkgs.inputs.hyprland.hyprland.override {wrapRuntimeDeps = false;}; + xdhp = pkgs.inputs.hyprland.xdg-desktop-portal-hyprland.override {inherit hyprland;}; +in { + imports = [ + ../common + ../common/wayland-wm + ]; + + xdg.portal = { + extraPortals = [xdhp]; + configPackages = [hyprland]; + }; + + home.packages = with pkgs; [ + inputs.hyprwm-contrib.grimblast + hyprslurp + hyprpicker + ]; + + wayland.windowManger.hyprland = { + enable = true; + package = hyprland; + systemd = { + enable = true; + # Same as default but stop graphical-session too + extraCommands = lib.mkBefore [ + "systemctl --user stop graphical-session.target" + "systemctl --user start hyprland-session.target" + ]; + }; + +#TODO: Add hyprland config + }; +}