make hyprland work
This commit is contained in:
parent
4e0e153a0b
commit
9e851bec59
4 changed files with 167 additions and 59 deletions
|
@ -2,12 +2,13 @@
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, flake-self, inputs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[ # Include the results of the hardware scan.
|
[ # Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
./modules/hyprland/default.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
|
@ -44,32 +45,26 @@
|
||||||
LC_TIME = "en_US.UTF-8";
|
LC_TIME = "en_US.UTF-8";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
xserver = {
|
xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
videoDrivers = [ "nvidia" ];
|
videoDrivers = [ "nvidia" ];
|
||||||
displayManager = {
|
displayManager = {
|
||||||
lightdm.enable = true;
|
gdm.enable = true;
|
||||||
|
gdm.wayland = true;
|
||||||
};
|
};
|
||||||
desktopManager.plasma5.enable = true;
|
desktopManager.plasma5.enable = true;
|
||||||
windowManager.i3.enable = true;
|
|
||||||
windowManager.i3.package = pkgs.i3-gaps;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
layout = "us";
|
layout = "us";
|
||||||
xkbVariant = "";
|
xkbVariant = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
services.printing.enable = true;
|
||||||
services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound with pipewire.
|
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
hardware.pulseaudio.enable = false;
|
hardware.pulseaudio.enable = false;
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
|
@ -78,72 +73,95 @@
|
||||||
alsa.enable = true;
|
alsa.enable = true;
|
||||||
alsa.support32Bit = true;
|
alsa.support32Bit = true;
|
||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
# If you want to use JACK applications, uncomment this
|
|
||||||
#jack.enable = true;
|
|
||||||
|
|
||||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
|
||||||
# no need to redefine it in your config for now)
|
|
||||||
#media-session.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
programs.fish.enable = true;
|
||||||
# services.xserver.libinput.enable = true;
|
users.defaultUserShell = pkgs.fish;
|
||||||
|
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.notoh = {
|
users.users.notoh = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = "notoh";
|
description = "notoh";
|
||||||
extraGroups = [ "networkmanager" "wheel" ];
|
extraGroups = [ "networkmanager" "wheel" ];
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
firefox
|
firefox
|
||||||
neovim
|
neovim
|
||||||
git
|
|
||||||
discord
|
|
||||||
neofetch
|
neofetch
|
||||||
rofi
|
|
||||||
bitwarden
|
bitwarden
|
||||||
spotify
|
spotify
|
||||||
|
discord
|
||||||
|
waybar
|
||||||
|
obsidian
|
||||||
|
btop
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
||||||
wget
|
wget
|
||||||
wayland
|
git
|
||||||
alacritty
|
alacritty
|
||||||
gcc
|
gcc
|
||||||
|
kitty
|
||||||
|
stow
|
||||||
|
starship
|
||||||
|
rustup
|
||||||
|
cargo
|
||||||
|
jre
|
||||||
|
jdk
|
||||||
|
nodejs
|
||||||
|
polkit_gnome
|
||||||
|
appimage-run
|
||||||
];
|
];
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
|
||||||
# started in user sessions.
|
|
||||||
# programs.mtr.enable = true;
|
|
||||||
# programs.gnupg.agent = {
|
|
||||||
# enable = true;
|
|
||||||
# enableSSHSupport = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# List services that you want to enable:
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
# services.openssh.enable = true;
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
|
||||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
# networking.firewall.enable = false;
|
|
||||||
|
|
||||||
|
|
||||||
system.stateVersion = "23.05"; # Did you read the comment?
|
system.stateVersion = "23.05"; # Did you read the comment?
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
package = pkgs.nixFlakes;
|
package = pkgs.nixFlakes;
|
||||||
extraOptions = "experimental-features = nix-command flakes";
|
extraOptions = "experimental-features = nix-command flakes";
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
nvidia = {
|
||||||
|
powerManagement.enable = true;
|
||||||
|
modesetting.enable = true;
|
||||||
|
};
|
||||||
|
opengl.extraPackages = with pkgs; [nvidia-vaapi-driver];
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
substituters = ["https://hyprland.cachix.org"];
|
||||||
|
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
enableDefaultFonts = true;
|
||||||
|
fontDir.enable = true;
|
||||||
|
|
||||||
|
fonts = with pkgs; [
|
||||||
|
inter
|
||||||
|
jetbrains-mono
|
||||||
|
nerdfonts
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
recursive
|
||||||
|
rubik
|
||||||
|
twemoji-color-font
|
||||||
|
font-awesome
|
||||||
|
powerline-fonts
|
||||||
|
fira-code-symbols
|
||||||
|
];
|
||||||
|
|
||||||
|
fontconfig = {
|
||||||
|
enable = true;
|
||||||
|
allowBitmaps = true;
|
||||||
|
defaultFonts = {
|
||||||
|
monospace = ["Maple Mono NF"];
|
||||||
|
sansSerif = ["Google Sans Text"];
|
||||||
|
};
|
||||||
|
hinting.style = "hintfull";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
16
flake.nix
16
flake.nix
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
description = "Your new nix config";
|
description = "notohh's flake";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# Nixpkgs
|
# Nixpkgs
|
||||||
|
@ -17,7 +17,6 @@
|
||||||
home-manager.url = "github:nix-community/home-manager";
|
home-manager.url = "github:nix-community/home-manager";
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
# TODO: Add any other flake you might need
|
|
||||||
# hardware.url = "github:nixos/nixos-hardware";
|
# hardware.url = "github:nixos/nixos-hardware";
|
||||||
|
|
||||||
# Shameless plug: looking for a way to nixify your themes and make
|
# Shameless plug: looking for a way to nixify your themes and make
|
||||||
|
@ -29,29 +28,26 @@
|
||||||
# NixOS configuration entrypoint
|
# NixOS configuration entrypoint
|
||||||
# Available through 'nixos-rebuild --flake .#your-hostname'
|
# Available through 'nixos-rebuild --flake .#your-hostname'
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
# FIXME replace with your hostname
|
|
||||||
nixos = nixpkgs.lib.nixosSystem {
|
nixos = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = { inherit inputs; }; # Pass flake inputs to our config
|
specialArgs = { inherit inputs; flake-self = self; }; # Pass flake inputs to our config
|
||||||
# > Our main nixos configuration file <
|
# > Our main nixos configuration file <
|
||||||
modules = [ ./configuration.nix
|
modules = [ ./configuration.nix
|
||||||
|
|
||||||
hyprland.nixosModules.default
|
hyprland.nixosModules.default
|
||||||
{ programs.hyprland.enable = true; }
|
{ programs.hyprland.enable = true; }
|
||||||
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Standalone home-manager configuration entrypoint
|
# Standalone home-manager configuration entrypoint
|
||||||
# Available through 'home-manager --flake .#your-username@your-hostname'
|
# Available through 'home-manager --flake .#your-username@your-hostname'
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
# FIXME replace with your username@hostname
|
|
||||||
"notoh@nixos" = home-manager.lib.homeManagerConfiguration {
|
"notoh@nixos" = home-manager.lib.homeManagerConfiguration {
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
|
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
|
||||||
extraSpecialArgs = { inherit inputs; }; # Pass flake inputs to our config
|
extraSpecialArgs = { inherit inputs; }; # Pass flake inputs to our config
|
||||||
# > Our main home-manager configuration file <
|
# > Our main home-manager configuration file <
|
||||||
modules = [
|
modules = [./home-manager/home.nix ];
|
||||||
./home-manager/home.nix ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
dbus-hyprland-environment = pkgs.writeTextFile {
|
||||||
|
name = "dbus-hyprland-environment";
|
||||||
|
destination = "/bin/dbus-hyprland-environment";
|
||||||
|
executable = true;
|
||||||
|
|
||||||
|
text = ''
|
||||||
|
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=hyprland
|
||||||
|
systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
|
||||||
|
systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
configure-gtk = pkgs.writeTextFile {
|
||||||
|
name = "configure-gtk";
|
||||||
|
destination = "/bin/configure-gtk";
|
||||||
|
executable = true;
|
||||||
|
text = let
|
||||||
|
schema = pkgs.gsettings-desktop-schemas;
|
||||||
|
datadir = "${schema}/share/gesettings/schemas/${schema.name}";
|
||||||
|
in ''
|
||||||
|
export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS
|
||||||
|
gnome_schema=org.gnome.desktop.interface
|
||||||
|
gesettings set $gnome_schema gtk-theme 'Adwaita'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
|
||||||
|
hyprland = (import flake-compat {
|
||||||
|
src = builtins.fetchTarball "https://github.com/vaxerski/Hyprland/archive/master.tar.gz";
|
||||||
|
}).defaultNix;
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
dbus-hyprland-environment
|
||||||
|
configure-gtk
|
||||||
|
wayland
|
||||||
|
glib
|
||||||
|
gnome3.adwaita-icon-theme
|
||||||
|
grim
|
||||||
|
wl-clipboard
|
||||||
|
bemenu
|
||||||
|
wlr-randr
|
||||||
|
wofi
|
||||||
|
];
|
||||||
|
|
||||||
|
services.dbus.enable = true;
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
wlr.enable = true;
|
||||||
|
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||||
|
gtkUsePortal = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.hyprland.enable = true;
|
||||||
|
programs.xwayland.enable = true;
|
||||||
|
|
||||||
|
environment.sessionVariables = rec {
|
||||||
|
GBM_BACKEND = "nvidia-drm";
|
||||||
|
__GL_GSYNC_ALLOWED = "0";
|
||||||
|
__GL_VRR_ALLOWED = "0";
|
||||||
|
WLR_DRM_NO_ATOMIC = "1";
|
||||||
|
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||||
|
|
||||||
|
# Will break SDDM if running X11
|
||||||
|
QT_QPA_PLATFORM = "wayland";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
|
||||||
|
GDK_BACKEND = "wayland";
|
||||||
|
WLR_NO_HARDWARE_CURSORS = "1";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = rec {
|
||||||
|
initial_session = {
|
||||||
|
command = "Hyprland";
|
||||||
|
user = "notoh";
|
||||||
|
};
|
||||||
|
default_session = initial_session;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc."greetd/environments".text = ''
|
||||||
|
Hyprland
|
||||||
|
'';
|
||||||
|
|
||||||
|
|
||||||
|
}
|
1
modules/wayland/wayland.nix
Normal file
1
modules/wayland/wayland.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
Loading…
Reference in a new issue