mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2025-12-11 02:56:27 +00:00
Compare commits
3 Commits
df0600601b
...
48e66ab57a
| Author | SHA1 | Date | |
|---|---|---|---|
|
48e66ab57a
|
|||
|
7bf49268f2
|
|||
|
34a7ef00fd
|
38
flake.lock
generated
38
flake.lock
generated
@@ -8,11 +8,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741352980,
|
||||
"narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
|
||||
"lastModified": 1743550720,
|
||||
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
|
||||
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -46,11 +46,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1743360001,
|
||||
"narHash": "sha256-HtpS/ZdgWXw0y+aFdORcX5RuBGTyz3WskThspNR70SM=",
|
||||
"lastModified": 1746317522,
|
||||
"narHash": "sha256-/jZ4Wd4HHUEWPSlNj48k1E4Mh+1fUbwI/vSlPPIMG3U=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "b6fd653ef8fbeccfd4958650757e91767a65506d",
|
||||
"rev": "621986fed37c5d0cb8df010ed8369694dc47c09b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -73,16 +73,16 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1729958008,
|
||||
"narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=",
|
||||
"lastModified": 1737371634,
|
||||
"narHash": "sha256-fTVAWzT1UMm1lT+YxHuVPtH+DATrhYfea3B0MxG/cGw=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "ixx",
|
||||
"rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb",
|
||||
"rev": "a1176e2a10ce745ff8f63e4af124ece8fe0b1648",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"ref": "v0.0.6",
|
||||
"ref": "v0.0.7",
|
||||
"repo": "ixx",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -127,11 +127,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1743315132,
|
||||
"narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=",
|
||||
"lastModified": 1746232882,
|
||||
"narHash": "sha256-MHmBH2rS8KkRRdoU/feC/dKbdlMkcNkB5mwkuipVHeQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "52faf482a3889b7619003c0daec593a1912fddc1",
|
||||
"rev": "7a2622e2c0dbad5c4493cb268aba12896e28b008",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -150,11 +150,11 @@
|
||||
"nuschtosSearch": "nuschtosSearch"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1743362786,
|
||||
"narHash": "sha256-XbXIRDbb8/vLBX1M096l7lM5wfzBTp1ZXfUl9bUhVGU=",
|
||||
"lastModified": 1746309817,
|
||||
"narHash": "sha256-oqOpTyjdeY+LP+WiU9LxGdZ/bZ9YK7MNzNMDUw98kPM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "d81f37256d0a8691b837b74979d27bf89be8ecdd",
|
||||
"rev": "c978122396a4208bf1965d346b7456e7256fe70c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -173,11 +173,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1742659553,
|
||||
"narHash": "sha256-i/JCrr/jApVorI9GkSV5to+USrRCa0rWuQDH8JSlK2A=",
|
||||
"lastModified": 1745046075,
|
||||
"narHash": "sha256-8v4y6k16Ra/fiecb4DxhsoOGtzLKgKlS+9/XJ9z0T2I=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"rev": "508752835128a3977985a4d5225ff241f7756181",
|
||||
"rev": "066afe8643274470f4a294442aadd988356a478f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
38
flake.nix
38
flake.nix
@@ -62,7 +62,7 @@
|
||||
username,
|
||||
system,
|
||||
}:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
nixpkgs.lib.nixosSystem rec {
|
||||
pkgs = legacyPackages.${system};
|
||||
modules = [
|
||||
./modules/nixos
|
||||
@@ -70,9 +70,24 @@
|
||||
home-manager.nixosModules.home-manager
|
||||
nix-flatpak.nixosModules.nix-flatpak
|
||||
{
|
||||
_module.args = {
|
||||
inherit username;
|
||||
};
|
||||
_module.args =
|
||||
let
|
||||
patchDesktop =
|
||||
pkg: appName: from: to:
|
||||
pkgs.lib.hiPrio (
|
||||
pkgs.runCommand "$patched-desktop-entry-for-${appName}" { } ''
|
||||
${pkgs.coreutils}/bin/mkdir -p $out/share/applications
|
||||
${pkgs.gnused}/bin/sed 's#${from}#${to}#g' < ${pkg}/share/applications/${appName}.desktop > $out/share/applications/${appName}.desktop
|
||||
''
|
||||
);
|
||||
GPUOffloadApp = pkg: desktopName: patchDesktop pkg desktopName "^Exec=" "Exec=nvidia-offload ";
|
||||
gpu-offload =
|
||||
config: pkg: desktopName:
|
||||
if config.hardware.nvidia.prime.offload.enable then GPUOffloadApp pkg desktopName else pkg;
|
||||
in
|
||||
{
|
||||
inherit username gpu-offload;
|
||||
};
|
||||
networking.hostName = hostname;
|
||||
services.flatpak.enable = true;
|
||||
home-manager = {
|
||||
@@ -96,10 +111,17 @@
|
||||
};
|
||||
in
|
||||
{
|
||||
nixosConfigurations.MONSTER = mkHost {
|
||||
hostname = "MONSTER";
|
||||
username = "theaninova";
|
||||
system = "x86_64-linux";
|
||||
nixosConfigurations = {
|
||||
MONSTER = mkHost {
|
||||
hostname = "MONSTER";
|
||||
username = "theaninova";
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
aero = mkHost {
|
||||
hostname = "aero";
|
||||
username = "theaninova";
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
};
|
||||
|
||||
nixosModules.theaninovos = import ./modules/nixos;
|
||||
|
||||
@@ -45,12 +45,14 @@
|
||||
};
|
||||
|
||||
shell.components = {
|
||||
dunst.enable = true;
|
||||
#dunst.enable = true;
|
||||
firefox-pip.enable = true;
|
||||
flameshot.enable = true;
|
||||
gnome-keyring.enable = true;
|
||||
hyprpicker.enable = true;
|
||||
kde-connect.enable = true;
|
||||
kitty.enable = true;
|
||||
swaync.enable = true;
|
||||
walker.enable = true;
|
||||
waybar.enable = true;
|
||||
};
|
||||
@@ -119,6 +121,7 @@
|
||||
extraGroups = [
|
||||
"scanner"
|
||||
"lp"
|
||||
"storage"
|
||||
"networkmanager"
|
||||
"audio"
|
||||
"video"
|
||||
@@ -132,6 +135,7 @@
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Essential utils
|
||||
usbutils
|
||||
usbimager
|
||||
uhubctl
|
||||
pciutils
|
||||
htop
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
{ ... }:
|
||||
{
|
||||
theme.md3-evo.enable = true;
|
||||
theme.md3-evo = {
|
||||
enable = true;
|
||||
auto-dark = {
|
||||
enable = true;
|
||||
lat = 52.52;
|
||||
lon = 13.40;
|
||||
};
|
||||
};
|
||||
programs.zoxide.enable = true;
|
||||
}
|
||||
|
||||
196
hosts/aero/default.nix
Normal file
196
hosts/aero/default.nix
Normal file
@@ -0,0 +1,196 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [ ./hardware-configuration.nix ];
|
||||
|
||||
nix = {
|
||||
package = pkgs.nixVersions.latest;
|
||||
settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
gc = {
|
||||
automatic = true;
|
||||
randomizedDelaySec = "14m";
|
||||
options = "--deleteOlderThan 10d";
|
||||
};
|
||||
};
|
||||
|
||||
boot = {
|
||||
quiet.enable = true;
|
||||
|
||||
kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
||||
loader = {
|
||||
systemd-boot = {
|
||||
enable = true;
|
||||
configurationLimit = 10;
|
||||
};
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = [ "tpm_tis" ];
|
||||
systemd = {
|
||||
enable = true;
|
||||
tpm2.enable = true;
|
||||
};
|
||||
luks.devices."luks-52ef6970-af53-43e6-8b2f-0ff95dad2d23".device =
|
||||
"/dev/disk/by-uuid/52ef6970-af53-43e6-8b2f-0ff95dad2d23";
|
||||
};
|
||||
};
|
||||
|
||||
xdg.forced-compliance.enable = true;
|
||||
|
||||
usecases = {
|
||||
gaming.enable = true;
|
||||
"3d-printing".enable = true;
|
||||
development = {
|
||||
enable = true;
|
||||
svelte.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
shell.components = {
|
||||
firefox-pip.enable = true;
|
||||
flameshot.enable = true;
|
||||
gnome-keyring.enable = true;
|
||||
hyprpicker.enable = true;
|
||||
kde-connect.enable = true;
|
||||
kitty.enable = true;
|
||||
swaync.enable = true;
|
||||
walker.enable = true;
|
||||
waybar = {
|
||||
enable = true;
|
||||
mobile = true;
|
||||
};
|
||||
};
|
||||
desktops = {
|
||||
hyprland.enable = true;
|
||||
};
|
||||
locale.preset.theaninova.enable = true;
|
||||
|
||||
services.xserver = {
|
||||
xkb = {
|
||||
#variant = "altgr-intl";
|
||||
#layout = "us";
|
||||
layout = "de";
|
||||
};
|
||||
videoDrivers = [ "nvidia" ];
|
||||
};
|
||||
|
||||
hardware = {
|
||||
audio.preset.pipewire.enable = true;
|
||||
cc1.enable = true;
|
||||
|
||||
nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = false;
|
||||
open = true;
|
||||
nvidiaSettings = false;
|
||||
nvidiaPersistenced = false;
|
||||
prime = {
|
||||
/*
|
||||
offload = {
|
||||
enable = true;
|
||||
enableOffloadCmd = true;
|
||||
};
|
||||
*/
|
||||
sync.enable = true;
|
||||
intelBusId = "PCI:0:2:0";
|
||||
nvidiaBusId = "PCI:1:0:0";
|
||||
};
|
||||
};
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
extraPackages = with pkgs; [
|
||||
libvdpau-va-gl
|
||||
nvidia-vaapi-driver
|
||||
];
|
||||
};
|
||||
|
||||
enableAllFirmware = true;
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
};
|
||||
};
|
||||
|
||||
fonts = {
|
||||
fira-code = {
|
||||
enable = true;
|
||||
default = true;
|
||||
};
|
||||
noto-sans = {
|
||||
enable = true;
|
||||
default = true;
|
||||
};
|
||||
nerd-fonts.enable = true;
|
||||
};
|
||||
|
||||
programs.zsh.enable = true;
|
||||
security.sudo.configFile = ''
|
||||
Defaults env_reset,pwfeedback,passprompt=" "
|
||||
'';
|
||||
security.tpm2.enable = true;
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
users.users.${username} = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [
|
||||
"scanner"
|
||||
"lp"
|
||||
"storage"
|
||||
"networkmanager"
|
||||
"audio"
|
||||
"video"
|
||||
"plugdev"
|
||||
"cdrom"
|
||||
"kvm"
|
||||
];
|
||||
};
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Essential utils
|
||||
usbutils
|
||||
usbimager
|
||||
uhubctl
|
||||
bluetuith
|
||||
pciutils
|
||||
htop
|
||||
unar
|
||||
gnupg
|
||||
libdrm
|
||||
alsa-utils
|
||||
graphicsmagick
|
||||
ffmpeg
|
||||
nfs-utils
|
||||
opensc
|
||||
openssl
|
||||
# secure boot / tmp2
|
||||
sbctl
|
||||
tpm2-tss
|
||||
# Essential command line apps
|
||||
neovim
|
||||
mc
|
||||
git
|
||||
p7zip
|
||||
fzf
|
||||
eza
|
||||
];
|
||||
|
||||
networking = {
|
||||
firewall.allowedUDPPorts = [ 50765 ];
|
||||
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
plugins = with pkgs; [ networkmanager-openconnect ];
|
||||
};
|
||||
};
|
||||
|
||||
system.stateVersion = "24.11";
|
||||
}
|
||||
43
hosts/aero/hardware-configuration.nix
Normal file
43
hosts/aero/hardware-configuration.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/506db548-b5c2-400e-97b1-80bdae8064cf";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-c1e282d7-eae2-4795-b813-558f3124de2f".device = "/dev/disk/by-uuid/c1e282d7-eae2-4795-b813-558f3124de2f";
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/17E0-415A";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/8ddc2620-3dd8-4a7b-83b9-00afac84428f"; }
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp2s0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
37
hosts/aero/home.nix
Executable file
37
hosts/aero/home.nix
Executable file
@@ -0,0 +1,37 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
theme.md3-evo = {
|
||||
enable = true;
|
||||
auto-dark = {
|
||||
enable = true;
|
||||
lat = 52.52;
|
||||
lon = 13.40;
|
||||
};
|
||||
};
|
||||
programs.zoxide.enable = true;
|
||||
home.packages = with pkgs; [ blueman ];
|
||||
systemd.user.services = {
|
||||
nm-applet = {
|
||||
Unit = {
|
||||
Description = "Network manager applet";
|
||||
After = [ "graphical-session.target" ];
|
||||
};
|
||||
Install.WantedBy = [ "graphical-session.target" ];
|
||||
Service = {
|
||||
ExecStart = "${pkgs.networkmanagerapplet}/bin/nm-applet";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
blueman-applet = {
|
||||
Unit = {
|
||||
Description = "Bluetooth manager applet";
|
||||
After = [ "graphical-session.target" ];
|
||||
};
|
||||
Install.WantedBy = [ "graphical-session.target" ];
|
||||
Service = {
|
||||
ExecStart = "${pkgs.blueman}/bin/blueman-applet";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
0
modules/home-manager/default.nix
Normal file → Executable file
0
modules/home-manager/default.nix
Normal file → Executable file
@@ -4,6 +4,16 @@
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
hypr-cycle = pkgs.writeShellApplication {
|
||||
name = "hypr-cycle";
|
||||
text = ''
|
||||
WORKSPACE=$(hyprctl activeworkspace -j | jq -r '.id')
|
||||
WINDOW=$(hyprctl activewindow -j | jq -r '.address')
|
||||
hyprctl clients -j | jq -r "map(select(.workspace.id == $WORKSPACE) | select(.class == \"$1\") | .address | select(. != $WINDOW)) | .[0]"
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
config = lib.mkIf osConfig.desktops.hyprland.enable {
|
||||
wayland.windowManager.hyprland = {
|
||||
@@ -37,26 +47,6 @@
|
||||
"SUPER_SHIFT,h,movetoworkspace,r+1"
|
||||
"SUPER,mouse_up,workspace,r+1"
|
||||
"SUPER,mouse_down,workspace,r-1"
|
||||
|
||||
"SUPER,1,workspace,1"
|
||||
"SUPER,2,workspace,2"
|
||||
"SUPER,3,workspace,3"
|
||||
"SUPER,4,workspace,4"
|
||||
"SUPER,5,workspace,5"
|
||||
"SUPER,6,workspace,6"
|
||||
"SUPER,7,workspace,7"
|
||||
"SUPER,8,workspace,8"
|
||||
"SUPER,9,workspace,9"
|
||||
|
||||
"SUPER_SHIFT,1,movetoworkspace,1"
|
||||
"SUPER_SHIFT,2,movetoworkspace,2"
|
||||
"SUPER_SHIFT,3,movetoworkspace,3"
|
||||
"SUPER_SHIFT,4,movetoworkspace,4"
|
||||
"SUPER_SHIFT,5,movetoworkspace,5"
|
||||
"SUPER_SHIFT,6,movetoworkspace,6"
|
||||
"SUPER_SHIFT,7,movetoworkspace,7"
|
||||
"SUPER_SHIFT,8,movetoworkspace,8"
|
||||
"SUPER_SHIFT,9,movetoworkspace,9"
|
||||
];
|
||||
bindm = [
|
||||
"SUPER,mouse:272,movewindow"
|
||||
@@ -64,7 +54,11 @@
|
||||
];
|
||||
misc = {
|
||||
layers_hog_keyboard_focus = false;
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
};
|
||||
input.touchpad.natural_scroll = true;
|
||||
gestures.workspace_swipe = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
apostrophe
|
||||
|
||||
# creative
|
||||
gimp
|
||||
gimp3
|
||||
inkscape-with-extensions
|
||||
scribus
|
||||
audacity
|
||||
|
||||
@@ -35,14 +35,15 @@
|
||||
src = zsh-nix-shell;
|
||||
}
|
||||
];
|
||||
initExtraFirst = # sh
|
||||
''
|
||||
if [[ -r "''${XDG_CACHE_HOME:-''$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh" ]]; then
|
||||
source "''${XDG_CACHE_HOME:-''$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh"
|
||||
fi
|
||||
[[ ! -f ${./.p10k.zsh} ]] || source ${./.p10k.zsh}
|
||||
source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme
|
||||
'';
|
||||
initContent =
|
||||
pkgs.lib.mkBefore # sh
|
||||
''
|
||||
if [[ -r "''${XDG_CACHE_HOME:-''$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh" ]]; then
|
||||
source "''${XDG_CACHE_HOME:-''$HOME/.cache}/p10k-instant-prompt-''${(%):-%n}.zsh"
|
||||
fi
|
||||
[[ ! -f ${./.p10k.zsh} ]] || source ${./.p10k.zsh}
|
||||
source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme
|
||||
'';
|
||||
};
|
||||
direnv = {
|
||||
enable = true;
|
||||
|
||||
@@ -21,6 +21,13 @@
|
||||
"+ss10"
|
||||
];
|
||||
};
|
||||
box-drawing = {
|
||||
mode = "native";
|
||||
sizes.default = [
|
||||
1
|
||||
3
|
||||
];
|
||||
};
|
||||
};
|
||||
wayland.windowManager.hyprland.settings.windowrulev2 = [
|
||||
# For some reason it really wants to be maximized
|
||||
@@ -35,6 +42,7 @@
|
||||
neovide_hide_mouse_when_typing = true;
|
||||
experimental_layer_grouping = true;
|
||||
neovide_cursor_vfx_mode = "pixiedust";
|
||||
neovide_cursor_trail_size = 0.7;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
presets = {
|
||||
auto-save.enable = true;
|
||||
auto-format.enable = true;
|
||||
harpoon.enable = true;
|
||||
# harpoon.enable = true;
|
||||
lazygit.enable = true;
|
||||
mergetool.enable = true;
|
||||
trouble.enable = true;
|
||||
|
||||
@@ -18,7 +18,7 @@ in
|
||||
vim.lsp.set_log_level("off")
|
||||
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "solid" })
|
||||
'';
|
||||
diagnostics = {
|
||||
diagnostic.settings = {
|
||||
virtual_text.prefix = "●";
|
||||
signs = false;
|
||||
float = {
|
||||
@@ -69,7 +69,7 @@ in
|
||||
plugins = {
|
||||
lsp = {
|
||||
enable = true;
|
||||
inlayHints = true;
|
||||
inlayHints = false;
|
||||
};
|
||||
telescope = {
|
||||
enable = true;
|
||||
|
||||
@@ -31,10 +31,12 @@ in
|
||||
settings = {
|
||||
options = {
|
||||
globalstatus = true;
|
||||
section_separators = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
/*
|
||||
section_separators = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
*/
|
||||
component_separators = {
|
||||
left = "┊";
|
||||
right = "┊";
|
||||
@@ -44,10 +46,12 @@ in
|
||||
lualine_a = [
|
||||
{
|
||||
__unkeyed-1 = "mode";
|
||||
separator = {
|
||||
right = "";
|
||||
left = "";
|
||||
};
|
||||
/*
|
||||
separator = {
|
||||
right = "";
|
||||
left = "";
|
||||
};
|
||||
*/
|
||||
icon = "";
|
||||
}
|
||||
];
|
||||
@@ -55,10 +59,12 @@ in
|
||||
lualine_z = [
|
||||
{
|
||||
__unkeyed-1 = "location";
|
||||
separator = {
|
||||
right = "";
|
||||
left = "";
|
||||
};
|
||||
/*
|
||||
separator = {
|
||||
right = "";
|
||||
left = "";
|
||||
};
|
||||
*/
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
gpg-agent = {
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
pinentryPackage = pkgs.pinentry-gnome3;
|
||||
pinentry.package = pkgs.pinentry-gnome3;
|
||||
};
|
||||
# fix pinentry on non-gnome with this in
|
||||
# the system config: services.dbus.packages = with pkgs; [ gcr ];
|
||||
|
||||
@@ -11,6 +11,15 @@ in
|
||||
{
|
||||
options.theme.md3-evo = {
|
||||
enable = lib.mkEnableOption "the MD3-EVO theme";
|
||||
auto-dark = {
|
||||
enable = lib.mkEnableOption "Automatically switch between light and dark mode";
|
||||
lon = lib.mkOption {
|
||||
type = lib.types.float;
|
||||
};
|
||||
lat = lib.mkOption {
|
||||
type = lib.types.float;
|
||||
};
|
||||
};
|
||||
flavour = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"content"
|
||||
@@ -177,9 +186,11 @@ in
|
||||
pkgs.matugen
|
||||
pkgs.swww
|
||||
pkgs.zenity
|
||||
pkgs.sunwait
|
||||
];
|
||||
text = ''
|
||||
WALLPAPER=${config.xdg.configHome}/matugen/wallpaper
|
||||
STATE=${config.xdg.stateHome}/md3-evo
|
||||
|
||||
SCHEME=$(dconf read /org/gnome/desktop/interface/color-scheme)
|
||||
if [ "$SCHEME" = "'prefer-light'" ]; then
|
||||
@@ -188,8 +199,15 @@ in
|
||||
MODE="dark"
|
||||
fi
|
||||
|
||||
if [ ! -d "$STATE" ]; then
|
||||
mkdir -p "$STATE"
|
||||
fi
|
||||
if [ -f "$STATE/mode" ]; then
|
||||
MODE=$(cat "$STATE/mode")
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo -e "\033[1mUsage:\033[0m mode|light|dark|toggle|wallpaper"
|
||||
echo -e "\033[1mUsage:\033[0m mode|light|dark|auto|toggle|wallpaper"
|
||||
exit 1
|
||||
elif [ "$1" = "mode" ]; then
|
||||
echo -e "$MODE"
|
||||
@@ -207,8 +225,10 @@ in
|
||||
else
|
||||
MODE="light"
|
||||
fi
|
||||
elif [ "$1" = "light" ] || [ "$1" = "dark" ]; then
|
||||
echo "$MODE" > "$STATE/mode"
|
||||
elif [ "$1" = "light" ] || [ "$1" = "dark" ] || [ "$1" == "auto" ]; then
|
||||
MODE="$1"
|
||||
echo "$MODE" > "$STATE/mode"
|
||||
elif [ "$1" = "init" ]; then
|
||||
echo -e "\033[1mSetting up matugen\033[0m"
|
||||
else
|
||||
@@ -221,6 +241,35 @@ in
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
THEME_SERVICE_PATH="${config.xdg.configHome}/systemd/user/theme-init.timer"
|
||||
if [ "$MODE" = "auto" ]; then
|
||||
TIME=$(sunwait poll ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E || :)
|
||||
if [ "$TIME" = "DAY" ]; then
|
||||
MODE="light"
|
||||
NEXT=6
|
||||
else
|
||||
MODE="dark"
|
||||
NEXT=4
|
||||
fi
|
||||
NEXT=$(sunwait report ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E | awk "/Daylight:/ {print \$$NEXT}")
|
||||
cat <<EOF | tee "$THEME_SERVICE_PATH" > /dev/null
|
||||
[Unit]
|
||||
Description=Next theme change timer
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* $(date -d "$NEXT today + 5 minutes" +'%H:%M'):00
|
||||
AccuracySec=1min
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOF
|
||||
else
|
||||
rm -f "$THEME_SERVICE_PATH"
|
||||
fi
|
||||
systemctl --user daemon-reload &> /dev/null || :
|
||||
systemctl --user restart theme-init.timer &> /dev/null || :
|
||||
|
||||
if [ "$MODE" = "light" ]; then
|
||||
GTK_THEME="adw-gtk3"
|
||||
else
|
||||
@@ -237,6 +286,10 @@ in
|
||||
hyprctl reload
|
||||
fi
|
||||
|
||||
if which swaync-client; then
|
||||
swaync-client --reload-css
|
||||
fi
|
||||
|
||||
for i in $(pgrep -u "$USER" -x nvim); do
|
||||
kill -USR1 "$i"
|
||||
done
|
||||
@@ -247,6 +300,7 @@ in
|
||||
lib.mkIf cfg.enable {
|
||||
home.packages = [
|
||||
pkgs.adw-gtk3
|
||||
pkgs.swww
|
||||
theme-script
|
||||
];
|
||||
|
||||
@@ -263,19 +317,17 @@ in
|
||||
qt.platformTheme.name = "qtct";
|
||||
|
||||
systemd.user.services = {
|
||||
/*
|
||||
swww-daemon = {
|
||||
Unit = {
|
||||
Description = "Swww Daemon";
|
||||
After = [ "graphical-session.target" ];
|
||||
};
|
||||
Install.WantedBy = [ "graphical-session.target" ];
|
||||
Service = {
|
||||
ExecStart = "${pkgs.swww}/bin/swww-daemon";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
swww-daemon = {
|
||||
Unit = {
|
||||
Description = "Swww Daemon";
|
||||
After = [ "graphical-session.target" ];
|
||||
};
|
||||
*/
|
||||
Install.WantedBy = [ "graphical-session.target" ];
|
||||
Service = {
|
||||
ExecStart = "${pkgs.swww}/bin/swww-daemon";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
theme-init = {
|
||||
Unit = {
|
||||
Description = "MD3 Evo Theme Init";
|
||||
@@ -346,7 +398,7 @@ in
|
||||
reload_apps = true;
|
||||
reload_apps_list = {
|
||||
kitty = config.programs.kitty.enable;
|
||||
waybar = false;
|
||||
waybar = config.programs.waybar.enable;
|
||||
dunst = config.services.dunst.enable;
|
||||
};
|
||||
|
||||
@@ -433,6 +485,14 @@ in
|
||||
input_path = ./discord.css;
|
||||
output_path = "${config.xdg.configHome}/vesktop/themes/matugen.theme.css";
|
||||
};
|
||||
waybar = {
|
||||
input_path = ./waybar.css;
|
||||
output_path = "${config.xdg.configHome}/waybar/style.css";
|
||||
};
|
||||
swaync = {
|
||||
input_path = ./swaync.css;
|
||||
output_path = "${config.xdg.configHome}/swaync/style.css";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -4,7 +4,7 @@ if exists("syntax_on")
|
||||
endif
|
||||
let g:colors_name="md3-evo"
|
||||
|
||||
let g:neovide_transparency = 1.0
|
||||
let g:neovide_opacity = 1.0
|
||||
let g:neovide_floating_corner_radius = 0.5
|
||||
let g:neovide_normal_opacity = {{custom.transparency}}
|
||||
let g:neovide_padding_top = {{custom.padding}}
|
||||
|
||||
375
modules/home-manager/theme/swaync.css
Normal file
375
modules/home-manager/theme/swaync.css
Normal file
@@ -0,0 +1,375 @@
|
||||
syntax error
|
||||
|
||||
* {
|
||||
font-size: 14px;
|
||||
font-family: "Noto Sans";
|
||||
transition: 100ms;
|
||||
box-shadow: unset;
|
||||
}
|
||||
|
||||
.control-center .notification-row {
|
||||
background-color: unset;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification,
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content,
|
||||
.floating-notifications
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content {
|
||||
margin-bottom: unset;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification {
|
||||
margin-top: 0.15rem;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification box,
|
||||
.control-center .notification-row .notification-background .notification widget,
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content,
|
||||
.floating-notifications
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
box,
|
||||
.floating-notifications
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
widget,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content {
|
||||
border: unset;
|
||||
border-radius: 1.159rem;
|
||||
-gtk-outline-radius: 1.159rem;
|
||||
}
|
||||
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content,
|
||||
.control-center .notification-background .notification .notification-content {
|
||||
background-color: {{colors.background.default.hex}};
|
||||
padding: 0.818rem;
|
||||
padding-right: unset;
|
||||
margin-right: unset;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification.low
|
||||
.notification-content
|
||||
label,
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification.normal
|
||||
.notification-content
|
||||
label,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification.low
|
||||
.notification-content
|
||||
label,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification.normal
|
||||
.notification-content
|
||||
label {
|
||||
color: {{colors.outline.default.hex}};
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification..notification-content
|
||||
image,
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification.normal
|
||||
.notification-content
|
||||
image,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification.low
|
||||
.notification-content
|
||||
image,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification.normal
|
||||
.notification-content
|
||||
image {
|
||||
background-color: {{colors.surface_container_high.default.hex}};
|
||||
color: {{colors.on_surface.default.hex}};
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification.critical
|
||||
.notification-content,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification.critical
|
||||
.notification-content {
|
||||
background-color: {{colors.surface_container_high.default.hex}};
|
||||
color: {{colors.on_surface.default.hex}};
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.summary,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.summary {
|
||||
font-family: "Noto Sans", sans-serif;
|
||||
font-size: 0.9909rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.time,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.time {
|
||||
font-family: "Noto Sans", sans-serif;
|
||||
font-size: 0.8291rem;
|
||||
font-weight: 500;
|
||||
margin-right: 1rem;
|
||||
padding-right: unset;
|
||||
}
|
||||
|
||||
.control-center
|
||||
.notification-row
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.body,
|
||||
.floating-notifications.background
|
||||
.notification-background
|
||||
.notification
|
||||
.notification-content
|
||||
.body {
|
||||
font-family: "Noto Sans", sans-serif;
|
||||
font-size: 0.8891rem;
|
||||
font-weight: 400;
|
||||
margin-top: 0.31rem;
|
||||
padding-right: unset;
|
||||
margin-right: unset;
|
||||
}
|
||||
|
||||
.control-center .notification-row .close-button,
|
||||
.floating-notifications.background .close-button {
|
||||
background-color: unset;
|
||||
border-radius: 100%;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
margin-right: 13px;
|
||||
margin-top: 6px;
|
||||
margin-bottom: unset;
|
||||
padding-bottom: unset;
|
||||
min-height: 20px;
|
||||
min-width: 20px;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.control-center .notification-row .close-button:hover,
|
||||
.floating-notifications.background .close-button:hover {
|
||||
background-color: rgba({{colors.background.default.red}}, {{colors.background.default.green}}, {{colors.background.default.blue}}, 0.15);
|
||||
}
|
||||
|
||||
.control-center {
|
||||
border-radius: 1.705rem;
|
||||
-gtk-outline-radius: 1.705rem;
|
||||
border-top: 1px solid rgba(164, 162, 167, 0.19);
|
||||
border-left: 1px solid rgba(164, 162, 167, 0.19);
|
||||
border-right: 1px solid rgba(128, 127, 132, 0.145);
|
||||
border-bottom: 1px solid rgba(128, 127, 132, 0.145);
|
||||
box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.45);
|
||||
margin: 7px;
|
||||
background-color: {{colors.background.default.hex}};
|
||||
padding: 1.023rem;
|
||||
}
|
||||
|
||||
.control-center trough {
|
||||
border-radius: 9999px;
|
||||
-gtk-outline-radius: 9999px;
|
||||
min-width: 0.545rem;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.control-center slider {
|
||||
border-radius: 9999px;
|
||||
-gtk-outline-radius: 9999px;
|
||||
min-width: 0.273rem;
|
||||
min-height: 2.045rem;
|
||||
background-color: rgba(199, 197, 208, 0.31);
|
||||
}
|
||||
|
||||
.control-center slider:hover {
|
||||
background-color: rgba(199, 197, 208, 0.448);
|
||||
}
|
||||
|
||||
.control-center slider:active {
|
||||
background-color: #77767e;
|
||||
}
|
||||
|
||||
/* title widget */
|
||||
|
||||
.widget-title {
|
||||
padding: 0.341rem;
|
||||
margin: unset;
|
||||
}
|
||||
|
||||
.widget-title label {
|
||||
font-family: "Noto Sans", sans-serif;
|
||||
font-size: 1.364rem;
|
||||
color: {{colors.on_background.default.hex}};
|
||||
margin-left: 0.941rem;
|
||||
}
|
||||
|
||||
.widget-title button {
|
||||
border: unset;
|
||||
background-color: unset;
|
||||
border-radius: 1.159rem;
|
||||
-gtk-outline-radius: 1.159rem;
|
||||
padding: 0.141rem 0.141rem;
|
||||
margin-right: 0.841rem;
|
||||
}
|
||||
|
||||
.widget-title button label {
|
||||
font-family: "Noto Sans", sans-serif;
|
||||
font-size: 1.0409rem;
|
||||
color: {{colors.on_background.default.hex}};
|
||||
margin-right: 0.841rem;
|
||||
}
|
||||
|
||||
.widget-title button:hover {
|
||||
background-color: rgba(128, 128, 128, 0.3);
|
||||
}
|
||||
|
||||
.widget-title button:active {
|
||||
background-color: rgba(128, 128, 128, 0.7);
|
||||
}
|
||||
|
||||
/* Buttons widget */
|
||||
|
||||
.widget-buttons-grid {
|
||||
border-radius: 1.159rem;
|
||||
-gtk-outline-radius: 1.159rem;
|
||||
padding: 0.341rem;
|
||||
background-color: rgba(28, 28, 34, 0.35);
|
||||
padding: unset;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox {
|
||||
padding: unset;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button:first-child {
|
||||
margin-left: unset;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button {
|
||||
border: none;
|
||||
background-color: unset;
|
||||
border-radius: 9999px;
|
||||
min-width: 5.522rem;
|
||||
min-height: 2.927rem;
|
||||
padding: unset;
|
||||
margin: unset;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button label {
|
||||
font-family: "Materials Symbol Rounded";
|
||||
font-size: 1.3027rem;
|
||||
color: #e4e1e6;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button:hover {
|
||||
background-color: rgba(128, 128, 128, 0.3);
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button:checked {
|
||||
/* OnePlus McClaren edition Orange accent */
|
||||
background-color: #ff9f34;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button:checked label {
|
||||
color: #14141b;
|
||||
}
|
||||
|
||||
/* Volume widget */
|
||||
|
||||
.widget-volume {
|
||||
background-color: rgba(28, 28, 34, 0.35);
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
-gtk-outline-radius: 1.159rem;
|
||||
-gtk-outline-radius: 1.159rem;
|
||||
}
|
||||
|
||||
.widget-volume trough {
|
||||
/* OnePlus McClaren edition Orange accent */
|
||||
border: unset;
|
||||
background-color: rgba(128, 128, 128, 0.4);
|
||||
}
|
||||
|
||||
.widget-volume trough slider {
|
||||
/* OnePlus McClaren edition Orange accent */
|
||||
color: unset;
|
||||
background-color: #ff9f34;
|
||||
border-radius: 100%;
|
||||
min-height: 1.25rem;
|
||||
}
|
||||
|
||||
/* Mpris widget */
|
||||
|
||||
.widget-mpris {
|
||||
background-color: rgba(28, 28, 34, 0.35);
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 1.159rem;
|
||||
-gtk-outline-radius: 1.159rem;
|
||||
}
|
||||
|
||||
.widget-mpris-player {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
}
|
||||
|
||||
.widget-mpris-title {
|
||||
font-weight: bold;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
70
modules/home-manager/theme/waybar.css
Normal file
70
modules/home-manager/theme/waybar.css
Normal file
@@ -0,0 +1,70 @@
|
||||
window#waybar {
|
||||
background: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
window#waybar > box.horizontal {
|
||||
margin: 12px 24px 0;
|
||||
}
|
||||
|
||||
.module {
|
||||
color: white;
|
||||
background: none;
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#privacy-item {
|
||||
padding: 0 16px;
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
|
||||
#pulseaudio-slider {
|
||||
margin: 0 6px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#pulseaudio-slider slider {
|
||||
background: none;
|
||||
min-height: 12px;
|
||||
min-width: 12px;
|
||||
border-radius: 100%;
|
||||
margin: 0;
|
||||
opacity: 0;
|
||||
background-image: none;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#pulseaudio-slider trough {
|
||||
min-height: 12px;
|
||||
min-width: 80px;
|
||||
border-radius: 6px;
|
||||
background-color: {{colors.on_primary.default.hex}};
|
||||
}
|
||||
|
||||
#pulseaudio-slider highlight {
|
||||
min-width: 12px;
|
||||
border-radius: 6px;
|
||||
background-color: {{colors.primary.default.hex}};
|
||||
}
|
||||
|
||||
#privacy-item.audio-in {
|
||||
background: {{colors.primary.default.hex}};
|
||||
color: {{colors.on_primary.default.hex}};
|
||||
}
|
||||
|
||||
#privacy-item.audio-out {
|
||||
background: {{colors.secondary.default.hex}};
|
||||
color: {{colors.on_secondary.default.hex}};
|
||||
}
|
||||
|
||||
#privacy-item.screenshare {
|
||||
background: {{colors.tertiary.default.hex}};
|
||||
color: {{colors.on_tertiary.default.hex}};
|
||||
}
|
||||
@@ -34,7 +34,9 @@
|
||||
./shell/flameshot.nix
|
||||
./shell/gnome-keyring.nix
|
||||
./shell/hyprpicker.nix
|
||||
./shell/kde-connect.nix
|
||||
./shell/kitty.nix
|
||||
./shell/swaync.nix
|
||||
./shell/walker.nix
|
||||
./shell/waybar.nix
|
||||
|
||||
|
||||
@@ -23,7 +23,10 @@ in
|
||||
};
|
||||
home-manager.users.${username} = {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = false;
|
||||
package = null;
|
||||
portalPackage = null;
|
||||
};
|
||||
home = {
|
||||
packages = with pkgs; [ grim ];
|
||||
@@ -49,6 +52,7 @@ in
|
||||
Wants = [ "network-online.target" ];
|
||||
};
|
||||
};
|
||||
services.polkit-gnome.enable = true;
|
||||
};
|
||||
|
||||
systemd.services = {
|
||||
@@ -66,16 +70,11 @@ in
|
||||
"hyprland"
|
||||
"gtk"
|
||||
];
|
||||
"org.freedesktop.impl.portal.FileChooser" = [ "gtk" ];
|
||||
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
seatd = {
|
||||
enable = true;
|
||||
user = username;
|
||||
};
|
||||
kmscon = {
|
||||
enable = true;
|
||||
hwRender = true;
|
||||
|
||||
@@ -49,12 +49,16 @@ in
|
||||
DXVK_HDR = "1";
|
||||
};
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
general.layout = "master";
|
||||
general = {
|
||||
layout = "master";
|
||||
allow_tearing = true;
|
||||
};
|
||||
master = {
|
||||
orientation = "center";
|
||||
slave_count_for_center_master = 0;
|
||||
mfact = 0.4;
|
||||
};
|
||||
render.direct_scanout = 1;
|
||||
monitor = [
|
||||
"DP-3,3840x2160@144,0x0,1,bitdepth,10"
|
||||
"DP-3,addreserved,340,0,0,0"
|
||||
@@ -63,7 +67,7 @@ in
|
||||
misc.vrr = 2; # VA suffers from VRR flicker
|
||||
cursor = {
|
||||
min_refresh_rate = 48;
|
||||
no_break_fs_vrr = true;
|
||||
no_break_fs_vrr = 1;
|
||||
};
|
||||
experimental = {
|
||||
xx_color_management_v4 = true;
|
||||
|
||||
@@ -26,22 +26,24 @@ in
|
||||
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
boot.kernelParams = [
|
||||
"fbdev=1"
|
||||
"nvidia_drm.fbdev=1"
|
||||
];
|
||||
boot.kernelModules = [
|
||||
"nvidia"
|
||||
"nvidia_modeset"
|
||||
"nvidia_uvm"
|
||||
"nvidia_drm"
|
||||
];
|
||||
boot.initrd.kernelModules = [
|
||||
"nvidia"
|
||||
"nvidia_modeset"
|
||||
"nvidia_uvm"
|
||||
"nvidia_drm"
|
||||
];
|
||||
boot = {
|
||||
kernelParams = [
|
||||
"fbdev=1"
|
||||
"nvidia_drm.fbdev=1"
|
||||
];
|
||||
kernelModules = [
|
||||
"nvidia"
|
||||
"nvidia_modeset"
|
||||
"nvidia_uvm"
|
||||
"nvidia_drm"
|
||||
];
|
||||
initrd.kernelModules = [
|
||||
"nvidia"
|
||||
"nvidia_modeset"
|
||||
"nvidia_uvm"
|
||||
"nvidia_drm"
|
||||
];
|
||||
};
|
||||
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
|
||||
28
modules/nixos/shell/kde-connect.nix
Normal file
28
modules/nixos/shell/kde-connect.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.shell.components.kde-connect;
|
||||
in
|
||||
{
|
||||
options.shell.components.kde-connect = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "Enable a pre-configured kde connect setup");
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${username}.services.kdeconnect.enable = true;
|
||||
networking.firewall = rec {
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
}
|
||||
];
|
||||
allowedUDPPortRanges = allowedTCPPortRanges;
|
||||
};
|
||||
};
|
||||
}
|
||||
65
modules/nixos/shell/swaync.nix
Normal file
65
modules/nixos/shell/swaync.nix
Normal file
@@ -0,0 +1,65 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.shell.components.swaync;
|
||||
in
|
||||
{
|
||||
options.shell.components.swaync = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "Enable a pre-configured notification center");
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${username} = {
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
settings = {
|
||||
positionX = "center";
|
||||
positionY = "top";
|
||||
fit-to-screen = false;
|
||||
control-center-width = 600;
|
||||
control-center-height = 800;
|
||||
control-center-margin-top = 2;
|
||||
control-center-margin-bottom = 2;
|
||||
control-center-margin-right = 1;
|
||||
control-center-margin-left = 0;
|
||||
notification-window-width = 400;
|
||||
notification-icon-size = 48;
|
||||
notification-body-image-height = 160;
|
||||
notification-body-image-width = 200;
|
||||
image-visibility = "when-available";
|
||||
};
|
||||
};
|
||||
programs.waybar.settings.mainBar = {
|
||||
modules-center = lib.mkAfter [
|
||||
"custom/notification"
|
||||
];
|
||||
|
||||
"custom/notification" = {
|
||||
tooltip = false;
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
notification = "";
|
||||
none = "";
|
||||
dnd-notification = "";
|
||||
dnd-none = "";
|
||||
inhibited-notification = "";
|
||||
inhibited-none = "";
|
||||
dnd-inhibited-notification = "";
|
||||
dnd-inhibited-none = "";
|
||||
};
|
||||
return-type = "json";
|
||||
exec-if = "which swaync-client";
|
||||
exec = "swaync-client -swb";
|
||||
on-click = "swaync-client -t -sw";
|
||||
on-click-right = "swaync-client -d -sw";
|
||||
escape = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -12,6 +12,7 @@ in
|
||||
{
|
||||
options.shell.components.waybar = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "Enable a pre-configured waybar setup");
|
||||
mobile = lib.mkEnableOption (lib.mdDoc "Mobile PC");
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
@@ -23,20 +24,63 @@ in
|
||||
reload_style_on_change = true;
|
||||
exclusive = true;
|
||||
|
||||
modules-left = [
|
||||
# "hyprland/workspaces"
|
||||
];
|
||||
modules-left = (
|
||||
if cfg.mobile then
|
||||
[
|
||||
"battery"
|
||||
]
|
||||
else
|
||||
[ ]
|
||||
);
|
||||
modules-center = [
|
||||
"clock"
|
||||
"systemd-failed-units"
|
||||
];
|
||||
modules-right = [
|
||||
"privacy"
|
||||
"gamemode"
|
||||
"tray"
|
||||
"custom/brightness"
|
||||
"custom/theme"
|
||||
];
|
||||
modules-right =
|
||||
[
|
||||
"privacy"
|
||||
"gamemode"
|
||||
"tray"
|
||||
"pulseaudio"
|
||||
]
|
||||
++ (
|
||||
if cfg.mobile then
|
||||
[ "backlight" ]
|
||||
else
|
||||
[
|
||||
"custom/brightness"
|
||||
]
|
||||
)
|
||||
++ [
|
||||
# "custom/theme"
|
||||
# "network"
|
||||
];
|
||||
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}%";
|
||||
format-icons = {
|
||||
"alsa_output.usb-Turtle_Beach_Turtle_Beach_Stealth_700_G2_MAX-01.iec958-stereo" = "";
|
||||
"alsa_output.pci-0000_0a_00.4.analog-stereo" = "";
|
||||
"alsa_output.pci-0000_08_00.1.hdmi-stereo-extra4" = "";
|
||||
"alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_797_2018_11_12_79383-00.analog-stereo" =
|
||||
"";
|
||||
"default" = "";
|
||||
};
|
||||
on-click = "pavucontrol --tab=3";
|
||||
};
|
||||
|
||||
"backlight" = {
|
||||
"format" = "{icon}";
|
||||
"format-icons" = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
"tooltip-format" = "{percent}%";
|
||||
};
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
format = "{windows}";
|
||||
@@ -52,12 +96,47 @@ in
|
||||
window-rewrite-default = "";
|
||||
};
|
||||
|
||||
"network" = {
|
||||
"format-icons" = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
"format" = "";
|
||||
"format-wifi" = "{icon}";
|
||||
"format-ethernet" = "";
|
||||
"format-disconnected" = if cfg.mobile then "" else "";
|
||||
};
|
||||
|
||||
"battery" = {
|
||||
"format-icons" = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
"format" = "{icon}";
|
||||
"format-time" = "{H}:{m}";
|
||||
"tooltip-format" = "{capacity}%";
|
||||
};
|
||||
|
||||
"custom/theme" = {
|
||||
return-type = "json";
|
||||
exec-on-event = true;
|
||||
exec = pkgs.writeShellScript "waybar-theme" ''
|
||||
if [ $(theme mode) = "dark" ]; then
|
||||
echo '{"text": "", "tooltip": "Switch to light theme"}'
|
||||
elif [ $(theme mode) = "auto" ]; then
|
||||
echo '{"text": "", "tooltip": "Switch to dark theme"}'
|
||||
else
|
||||
echo '{"text": "", "tooltip": "Switch to dark theme"}'
|
||||
fi
|
||||
@@ -65,6 +144,8 @@ in
|
||||
exec-if = "sleep 1";
|
||||
interval = "once";
|
||||
on-click = "theme toggle";
|
||||
on-click-right = "theme auto";
|
||||
on-click-middle = "theme wallpaper";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user