diff --git a/flake.lock b/flake.lock index 2fa47a92..ed69237b 100644 --- a/flake.lock +++ b/flake.lock @@ -136,9 +136,51 @@ "type": "github" } }, + "hyprland": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "nixpkgs": "nixpkgs_3", + "wlroots": "wlroots", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1680439377, + "narHash": "sha256-hF/cjhEWQR3g70RnI61GQ10Wrp8h6dDtWmkoI0LZ4PE=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "b1426cad28f250a2269012da904901e0edcef114", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671839510, + "narHash": "sha256-+PY1qqJfmZzzROgcIY4I7AkCwpnC+qBIYk2eFoA9RWc=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "b8f55e02a328c47ed373133c52483bbfa20a1b75", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, "musnix": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1679269409, @@ -156,7 +198,7 @@ }, "nixos-conf-editor": { "inputs": { - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "utils": "utils_2" }, "locked": { @@ -206,6 +248,22 @@ } }, "nixpkgs_3": { + "locked": { + "lastModified": 1679172431, + "narHash": "sha256-XEh5gIt5otaUbEAPUY5DILUTyWe1goAyeqQtmwaFPyI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1603d11595a232205f03d46e635d919d1e1ec5b9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1677407201, "narHash": "sha256-3blwdI9o1BAprkvlByHvtEm5HAIRn/XPjtcfiunpY7s=", @@ -221,7 +279,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1673796341, "narHash": "sha256-1kZi9OkukpNmOaPY7S5/+SlCDOuYnP3HkXHvNDyLQcc=", @@ -237,7 +295,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1679797994, "narHash": "sha256-Kr/O/UlfqAtoFmkZeAaphsxogeaN8a/IugBApFzPfpk=", @@ -276,9 +334,10 @@ "firefox-gnome-theme": "firefox-gnome-theme", "hardware": "hardware", "home-manager": "home-manager", + "hyprland": "hyprland", "musnix": "musnix", "nixos-conf-editor": "nixos-conf-editor", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "nur": "nur" } }, @@ -311,6 +370,49 @@ "repo": "flake-utils", "type": "github" } + }, + "wlroots": { + "flake": false, + "locked": { + "host": "gitlab.freedesktop.org", + "lastModified": 1679340088, + "narHash": "sha256-/1KiYoBivDj8HC/eVK2Tr2WYkVdKJxq2Lb0tQs0qqJo=", + "owner": "wlroots", + "repo": "wlroots", + "rev": "1d64e12391a638201c679e71d4e22bb45e5faa8e", + "type": "gitlab" + }, + "original": { + "host": "gitlab.freedesktop.org", + "owner": "wlroots", + "repo": "wlroots", + "type": "gitlab" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1673116118, + "narHash": "sha256-eR0yDSkR2XYMesfdRWJs25kAdXET2mbNNHu5t+KUcKA=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "d479c846531fd0e1d2357c9588b8310a2b859ef2", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 8f600d31..4ece9719 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,7 @@ nur.url = "github:nix-community/NUR"; musnix.url = "github:musnix/musnix"; devshell.url = "github:numtide/devshell"; + hyprland.url = "github:hyprwm/Hyprland"; # nixvim.url = "github:pta2002/nixvim"; # plasma-manager.url = "github:pjones/plasma-manager"; @@ -40,7 +41,8 @@ # It gives a name to the ... ellipses. outputs = inputs @ { nixpkgs, - home-manager, + # home-manager, + hyprland, ... }: # With let you can define local variables @@ -85,7 +87,9 @@ hostname = "nixinator"; username = "christoph"; - extraModules = []; + extraModules = [ + hyprland.nixosModules.default # Use system module for SDDM config + ]; }; # Usage: sudo nixos-rebuild switch --flake .#nixtop @@ -95,7 +99,9 @@ hostname = "nixtop"; username = "christoph"; - extraModules = []; + extraModules = [ + hyprland.nixosModules.default # Use system module for SDDM config + ]; }; }; }; diff --git a/home/christoph/default.nix b/home/christoph/default.nix index 90e99675..b03da2fc 100644 --- a/home/christoph/default.nix +++ b/home/christoph/default.nix @@ -28,6 +28,7 @@ rec { ../modules # inputs.nixvim.homeManagerModules.nixvim + # inputs.hyprland.homeManagerModules.default # NOTE: Use System module, this one doesn't (can't) add the SDDM entry ]; modules = { @@ -122,8 +123,6 @@ rec { }; }; - # Temporary hack: https://github.com/nix-community/home-manager/issues/3342 - # TODO: Remove when possible manual.manpages.enable = true; manual.html.enable = true; @@ -132,6 +131,9 @@ rec { # TODO: Derivations for bottles like UPlay, NeuralDSP, LoL (don't know what is possible with bottles-cli though) # TODO: When bottles derivations are there remove the bottles option from audio/gaming module and assert that bottles is enabled in flatpak module + # TODO: Remove Plasma, only use Hyprland + # TODO: I need to pack all Plasma/Hyprland/Gnome related stuff into their respective modules + # TODO: Then it should only be possible to activate one Desktop at a time # Make fonts installed through user packages available to applications # NOTE: I don't think I need this anymore as all fonts are installed through the system config but let's keep this just in case @@ -150,6 +152,9 @@ rec { source = ../../config/mpv; }; + # TODO: Hyprland Module + # TODO: Move Hyprland config to NixFlake/config/hyprland and link from here + # TODO: Latex module home.file."texmf/tex/latex/custom/christex.sty".source = ../../config/latex/christex.sty; home.file."Notes/Obsidian/Chriphost/christex.sty".source = ../../config/latex/christex.sty; # For obsidian notes @@ -360,7 +365,14 @@ rec { # Use NixCommunity binary cache cachix - # tor-browser-bundle-bin + # TODO: Module + # Hyprland stuff + # dunst # NOTE: Use HM service + libsForQt5.polkit-kde-agent # No idea if that comes with KDE + slurp # Region selector for screensharing + # rofi-wayland # App launcher # NOTE: Use HM Program + webcord # Unshitted discord? Well, except Krisp of course + ncspot # Spotify in cool (but slow)? ]; # Packages with extra options managed by HomeManager natively @@ -484,6 +496,20 @@ rec { enable = true; }; + # NOTE: For Hyprland -> Enable from hyprland module + rofi = { + enable = true; + package = pkgs.rofi-wayland; + plugins = [ + pkgs.keepmenu # Rofi KeepassXC frontend + ]; + terminal = "${pkgs.kitty}/bin/kitty"; + + font = "JetBrains Mono 14"; + # theme = + # extraConfig = ''''; + }; + # Git status replacement with file selection by number scmpuff = { enable = true; @@ -504,6 +530,7 @@ rec { enableFishIntegration = config.modules.fish.enable; }; + # TODO: Module vscode = { enable = true; enableExtensionUpdateCheck = false; @@ -628,6 +655,17 @@ rec { # TODO: Snippets }; + # TODO: Belongs to hyprland module + waybar = { + enable = true; + systemd = { + enable = false; + }; + + # settings = {}; + # style = ''''; + }; + # TODO: Check HM module options yt-dlp.enable = true; @@ -639,6 +677,11 @@ rec { services = { # kdeconnect.enable = true; # Note: This does not setup the firewall at all + + # TODO: To hyprland module + dunst = { + enable = true; + }; }; # Nicely reload system units when changing configs diff --git a/lib/nixos.nix b/lib/nixos.nix index a2c1ce2f..a1f06ac8 100644 --- a/lib/nixos.nix +++ b/lib/nixos.nix @@ -31,7 +31,7 @@ in { extraModules - # I included the home config statically like this as I am the only user + # I included the home config statically like this as I am the only user. # I would have liked to make it more flexible (for multiple users on the same host) # but I failed because nix stopped autoinjecting the required arguments and I didn't # know how to handle that... diff --git a/system/nixinator/default.nix b/system/nixinator/default.nix index ceabc0e7..cd7131fc 100644 --- a/system/nixinator/default.nix +++ b/system/nixinator/default.nix @@ -27,4 +27,18 @@ # videoDrivers = [ "nvidia" ]; # NVIDIA videoDrivers = ["amdgpu"]; }; + + programs.hyprland = { + enable = true; + nvidiaPatches = false; + recommendedEnvironment = true; + + # NOTE: System module hyprland is configured in ~/.config/hypr/ + # extraConfig = '' + # bind = SUPER,a,exec,rofi -show drun + + # exec-once = dunst & # Notification daemon + # exec-once = ${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1 + # ''; + }; }