Add hyprland

Add unfree
This commit is contained in:
muon 2024-06-06 20:16:24 +00:00
parent d676358f1a
commit 31ffdc94e8
18 changed files with 185 additions and 44 deletions

12
flake.lock generated
View file

@ -170,11 +170,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1716457508, "lastModified": 1717316182,
"narHash": "sha256-ZxzffLuWRyuMrkVVq7wastNUqeO0HJL9xqfY1QsYaqo=", "narHash": "sha256-Xi0EpZcu39N0eW7apLjFfUOR9y80toyjYizez7J1wMI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "850cb322046ef1a268449cf1ceda5fd24d930b05", "rev": "9b53a10f4c91892f5af87cf55d08fba59ca086af",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -206,11 +206,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1716509168, "lastModified": 1717196966,
"narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", "narHash": "sha256-yZKhxVIKd2lsbOqYd5iDoUIwsRZFqE87smE2Vzf6Ck0=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "bfb7a882678e518398ce9a31a881538679f6f092", "rev": "57610d2f8f0937f39dbd72251e9614b1561942d8",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -16,7 +16,7 @@
inherit system; inherit system;
}; };
utils = import ./utils.nix { inherit pkgs inputs system; }; utils = import ./utils.nix { inherit inputs system; };
in { in {
nixosConfigurations = { nixosConfigurations = {
muon = utils.mkHost ./hosts/muon/configuration.nix; muon = utils.mkHost ./hosts/muon/configuration.nix;

View file

@ -25,13 +25,15 @@ in {
# Modules # Modules
mods.desktop.enable = true; mods.desktop.enable = true;
mods.desktop.wayland.enable = true;
mods.theme.enable = true; mods.theme.enable = true;
mods.theme.wallpaper = ./wallpaper.png; mods.theme.wallpaper = ./wallpaper.png;
programs.hyprland = { # programs.hyprland.enable = true;
enable = true;
xwayland.enable = true; mods.unfree.steam.enable = true;
}; mods.unfree.nvidia.enable = true;
hardware = { hardware = {
opengl.enable = true; opengl.enable = true;
nvidia.modesetting.enable = true; nvidia.modesetting.enable = true;

View file

@ -8,14 +8,6 @@ let cfg = osConfig.mods; in {
# mods.module.enable = true; # mods.module.enable = true;
programs.helix.enable = true; programs.helix.enable = true;
programs.qutebrowser.enable = true; programs.qutebrowser.enable = true;
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
systemd.enable = true;
settings = {
debug.disable_logs = false;
};
};
# Version of first install # Version of first install
home.stateVersion = "23.05"; home.stateVersion = "23.05";

View file

@ -1,6 +1,7 @@
{ pkgs, lib, ... }: { { pkgs, lib, config, osConfig, ... }: {
imports = [ imports = [
./terminal ./terminal
./desktop
]; ];
# Let Home Manager install and manage itself # Let Home Manager install and manage itself

View file

@ -0,0 +1,12 @@
{ pkgs, lib, osConfig, ... }:
let
cfg = osConfig.mods.desktop;
in {
imports = [
./hyprland.nix
];
config = lib.mkIf cfg.wayland.enable {
mods.hyprland.enable = true;
};
}

View file

@ -0,0 +1,45 @@
{ pkgs, lib, config, ... }: {
options.mods.hyprland.enable = lib.mkEnableOption "enables hyprland";
config = lib.mkIf config.mods.hyprland.enable {
programs.waybar.enable = true;
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
# systemd.enable = true;
settings = {
exec-once = "${lib.getExe pkgs.waybar}";
input = {
kb_options = "caps:escape";
};
"$mod" = "SUPER";
bind = [
"$mod, F, exec, qutebrowser"
"$mod, Return, exec, alacritty"
"$mod SHIFT, Q, killactive,"
"$mod SHIFT, X, exit,"
"$mod, H, movefocus, l"
"$mod, J, movefocus, d"
"$mod, K, movefocus, u"
"$mod, L, movefocus, r"
]
++ (builtins.concatLists (builtins.genList (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
"$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
]
) 10) );
};
};
};
}

View file

@ -1,7 +1,5 @@
{ pkgs, lib, config, ... }: { { pkgs, lib, config, ... }: {
options = { options.mods.terminal.emulator.enable = lib.mkEnableOption "enables terminal emulator";
mods.terminal.emulator.enable = lib.mkEnableOption "enables terminal emulator";
};
config = lib.mkIf config.mods.terminal.emulator.enable { config = lib.mkIf config.mods.terminal.emulator.enable {
programs.alacritty.enable = true; programs.alacritty.enable = true;

View file

@ -1,5 +1,3 @@
{ pkgs, lib, ... }: { { pkgs, lib, ... }: {
config = { networking.networkmanager.enable = true;
networking.networkmanager.enable = true;
};
} }

View file

@ -1,9 +1,7 @@
{ pkgs, lib, config, ... }: { { pkgs, lib, config, ... }: {
options = { options.mods.user.name = lib.mkOption {
mods.user.name = lib.mkOption { default = "muon";
default = "muon"; description = "username of the main system user";
description = "username of the main system user";
};
}; };
config = { config = {

View file

@ -4,5 +4,8 @@
./system ./system
./desktop ./desktop
./theme ./theme
# </3
./unfree
]; ];
} }

View file

@ -1,15 +1,26 @@
{ pkgs, lib, config, ... }: { { pkgs, lib, config, ... }:
let
cfg = config.mods.desktop;
in {
imports = [ imports = [
./xorg.nix ./xorg.nix
./sound.nix ./sound.nix
]; ];
options = { options.mods.desktop = {
mods.desktop.enable = lib.mkEnableOption "enables graphical desktop environment"; enable = lib.mkEnableOption "enables graphical desktop environment";
wayland.enable = lib.mkEnableOption "enables hyprland";
}; };
config = lib.mkIf config.mods.desktop.enable { config = lib.mkIf cfg.enable {
mods.xorg.enable = true; mods.xorg.enable = true;
mods.sound.enable = true; mods.sound.enable = true;
mods.desktop.wayland.enable = lib.mkDefault false;
programs.hyprland = if cfg.wayland.enable then {
enable = true;
xwayland.enable = true;
} else {
enable = false;
};
}; };
} }

View file

@ -1,7 +1,5 @@
{ pkgs, lib, config, ... }: { { pkgs, lib, config, ... }: {
options = { options.mods.sound.enable = lib.mkEnableOption "enables sound";
mods.sound.enable = lib.mkEnableOption "enables sound";
};
config = lib.mkIf config.mods.sound.enable { config = lib.mkIf config.mods.sound.enable {
services.pipewire = { services.pipewire = {

View file

@ -1,7 +1,5 @@
{ pkgs, lib, config, ... }: { { pkgs, lib, config, ... }: {
options = { options.mods.xorg.enable = lib.mkEnableOption "enables xorg";
mods.xorg.enable = lib.mkEnableOption "enables xorg";
};
config = lib.mkIf config.mods.xorg.enable { config = lib.mkIf config.mods.xorg.enable {
services.xserver.enable = true; services.xserver.enable = true;

View file

@ -0,0 +1,19 @@
{ pkgs, lib, config, ... }:
let
cfg = config.mods.unfree;
mkPackages = mod:
if cfg.${mod}.enable then
cfg.${mod}.packages else [];
in {
imports = [
./steam.nix
./nvidia.nix
];
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) (
(mkPackages "steam") ++
(mkPackages "nvidia")
);
}

View file

@ -0,0 +1,42 @@
{ pkgs, lib, config, ... }:
let
cfg = config.mods.unfree.nvidia;
in {
options.mods.unfree.nvidia = {
enable = lib.mkEnableOption {
default = false;
description = "enables proprietary nvidia drivers";
};
packages = lib.mkOption {
default = [ "nvidia-x11" ];
description = "unfree packages";
};
driver = lib.mkOption {
default = "stable";
description = "nvidiaPackages driver kernel package";
};
};
config = lib.mkIf cfg.enable {
# nixos.wiki/wiki/Nvidia
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = false;
package = config.boot.kernelPackages.nvidiaPackages."${cfg.driver}";
};
};
}

View file

@ -0,0 +1,24 @@
{ pkgs, lib, config, ... }: {
options.mods.unfree.steam = {
enable = lib.mkEnableOption {
default = false;
description = "enables proprietary steam software";
};
packages = lib.mkOption {
default = [
"steam"
"steam-original"
"steam-run"
];
description = "unfree packages";
};
};
config = lib.mkIf config.mods.unfree.steam.enable {
# nixos.wiki/wiki/Steam
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
};
};
}

View file

@ -1,6 +1,6 @@
{ pkgs, inputs, system, ... }: { { inputs, system, ... }: {
mkHost = host: inputs.nixpkgs.lib.nixosSystem { mkHost = host: inputs.nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs system pkgs; }; specialArgs = { inherit inputs system; };
modules = [ modules = [
host host