diff --git a/README.md b/README.md
index f723dd3..25aa80e 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
-# Home Manager Configuration
+# TheaninOS
+
+A NixOS based OS you can configure.
Rebuild the configuration
@@ -36,14 +38,3 @@ After that reload the shell
nix flake update
sudo nixos-rebuild switch --flake .#
```
-
-## Adapting the config
-
-Few not so obvious things you might wanna adjust (non-exhaustive):
-
-- The default layout is configured for my [CharaChorder 1](https://www.charachorder.com/en-de/products/charachorder-one).
- You probably don't want that, though most you won't notice.
-- **Subpixel rendering is set up for a BGR layout.** Most likely you'll have an RGB layout.
-- Hyprland is configured with a layout that works on a 43" screen. You'll probably want to adjust that.a
-- Keybinds in Hyprland are made to work on my [CharaChorder 1](https://www.charachorder.com/en-de/products/charachorder-one).
- They'll be horrible to use on a qwerty keyboard.
diff --git a/flake.nix b/flake.nix
index 143bf73..b7caf33 100644
--- a/flake.nix
+++ b/flake.nix
@@ -49,6 +49,7 @@
ags = ags.packages.${prev.system}.default;
gbmonctl = prev.callPackage ./overlays/gbmonctl { };
lpc21isp = prev.callPackage ./overlays/lpc21isp { };
+ darkman = prev.callPackage ./overlays/darkman { };
cura = prev.appimageTools.wrapType2 rec {
name = "cura";
version = "5.6.0";
@@ -63,24 +64,24 @@
];
});
- mkHost = { hostname, username, desktop, system, stateVersion, }:
+ mkHost = { hostname, username, system }:
nixpkgs.lib.nixosSystem {
pkgs = legacyPackages.${system};
modules = [
- ./modules/nixos/gbmonctl
+ ./modules/nixos
./hosts/${hostname}
home-manager.nixosModules.home-manager
{
_module.args = { inherit username; };
networking.hostName = hostname;
- system.stateVersion = stateVersion;
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
- extraSpecialArgs = {
- inherit username desktop stateVersion inputs;
+ extraSpecialArgs = { inherit username inputs; };
+ users.${username} = {
+ imports =
+ [ ./modules/home-manager ./hosts/${hostname}/home.nix ];
};
- users.${username} = import ./home;
};
}
];
@@ -90,9 +91,7 @@
nixosConfigurations.MONSTER = mkHost {
hostname = "MONSTER";
username = "theaninova";
- desktop = "hyprland";
system = "x86_64-linux";
- stateVersion = "23.05";
};
};
}
diff --git a/home/desktops/hyprland/darkman.nix b/home/desktops/hyprland/darkman.nix
deleted file mode 100644
index b0e1c38..0000000
--- a/home/desktops/hyprland/darkman.nix
+++ /dev/null
@@ -1,71 +0,0 @@
-{ pkgs, config, ... }: {
- services.darkman = let
- wallpaperPath = "${config.home.homeDirectory}/.local/state/wallpaper.jpg";
- in {
- enable = false;
- package = pkgs.buildGoModule rec {
- pname = "darkman";
- version = "1.5.4";
-
- src = pkgs.fetchFromGitLab {
- owner = "WhyNotHugo";
- repo = "darkman";
- rev = "5332193777fb0c5dbde6cbfd015a16697d6a0c8e";
- hash = "sha256-3TGDy7hiI+z0IrA+d/Q+rMFlew6gipdpXyJ5eVLCmds=";
- };
-
- vendorHash = "sha256-xEPmNnaDwFU4l2G4cMvtNeQ9KneF5g9ViQSFrDkrafY=";
-
- nativeBuildInputs = [ pkgs.scdoc ];
-
- postPatch = ''
- substituteInPlace darkman.service \
- --replace "/usr/bin/darkman" "$out/bin/darkman"
- substituteInPlace contrib/dbus/nl.whynothugo.darkman.service \
- --replace "/usr/bin/darkman" "$out/bin/darkman"
- substituteInPlace contrib/dbus/org.freedesktop.impl.portal.desktop.darkman.service \
- --replace "/usr/bin/darkman" "$out/bin/darkman"
- '';
-
- buildPhase = ''
- runHook preBuild
- make build
- runHook postBuild
- '';
-
- installPhase = ''
- runHook preInstall
- make PREFIX=$out install
- runHook postInstall
- '';
-
- meta = with pkgs.lib; {
- description =
- "Framework for dark-mode and light-mode transitions on Linux desktop";
- homepage = "https://gitlab.com/WhyNotHugo/darkman";
- license = licenses.isc;
- maintainers = [ maintainers.ajgrf ];
- platforms = platforms.linux;
- mainProgram = "darkman";
- };
- };
- settings = {
- lat = 52.52;
- lng = 13.405;
- };
- darkModeScripts = {
- kitty-theme =
- # bash
- ''
- ${pkgs.kitty}/bin/kitty +kitten themes --reload-in=all --config-file-name ${config.home.homeDirectory}/.config/kitty/current-colors.conf Catppuccin-Frappe
- '';
- };
- lightModeScripts = {
- kitty-theme =
- # bash
- ''
- ${pkgs.kitty}/bin/kitty +kitten themes --reload-in=all --config-file-name ${config.home.homeDirectory}/.config/kitty/current-colors.conf Catppuccin-Latte
- '';
- };
- };
-}
diff --git a/home/desktops/hyprland/default.nix b/home/desktops/hyprland/default.nix
deleted file mode 100644
index 5ee8527..0000000
--- a/home/desktops/hyprland/default.nix
+++ /dev/null
@@ -1,243 +0,0 @@
-{ config, pkgs, lib, ... }: {
- imports = [ ./darkman.nix ];
-
- wayland.windowManager.hyprland = {
- enable = true;
- systemd = {
- enable = true;
- variables = [ "--all" ];
- };
- settings = {
- env = [
- "LIBVA_DRIVER_NAME,nvidia"
- "XDG_SESSION_TYPE,wayland"
- "GBM_BACKEND,nvidia-drm"
- "__GLX_VENDOR_LIBRARY_NAME,nvidia"
- "WLR_NO_HARDWARE_CURSORS,1"
- "NIXOS_OZONE_WL,1"
- # Gnome file manager fix
- "GIO_EXTRA_MODULES,${pkgs.gnome.gvfs}/lib/gio/modules"
- ];
- exec-once = [
- "systemctl --user start hyprland-session.target"
- "gnome-keyring-daemon --start --components=secrets"
- "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
- ];
- general = {
- layout = "master";
- resize_on_border = true;
- };
- master = {
- orientation = "center";
- new_is_master = true;
- always_center_master = true;
- mfact = 0.4;
- };
- input = {
- accel_profile = "flat";
- kb_layout = "cc1-thea";
- };
- bind = import ./keybinds.nix;
- bindm = import ./mousebinds.nix;
- bindr = [ "SUPER,SUPER_L,exec,pkill anyrun || anyrun" ];
- monitor = [ "DP-1,highrr,0x0,1" "DP-1,addreserved,250,0,0,0" ];
- workspace = [
- "special:calc,border:false,gapsout:200,on-created-empty:[noanim;silent] kitty -e qalc"
- ];
- windowrulev2 = let
- firefoxPip = "class:^(firefox)$,title:^(Picture-in-Picture)$";
- firefoxPipInitial = "class:^(firefox)$,title:^(Firefox)$";
- in [
- "keepaspectratio,${firefoxPip}"
- "noborder,${firefoxPip}"
- "float,${firefoxPip}"
- "float,${firefoxPipInitial}"
- "pin,${firefoxPip}"
- "pin,${firefoxPipInitial}"
- "fakefullscreen,${firefoxPip}"
- "fakefullscreen,${firefoxPipInitial}"
- "move 22 72,${firefoxPip}"
- "move 22 72,${firefoxPipInitial}"
- # For some reason it really wants to be maximized
- "suppressevent maximize,class:^(neovide)$"
- # pinentry
- "dimaround,class:^(gcr-prompter)$"
- "noborder,class:^(gcr-prompter)$"
- "rounding 10,class:^(gcr-prompter)$"
- "animation slide,class:^(gcr-prompter)$"
- # Flameshot fixes
- "float,class:^(flameshot)$"
- "animation fade,class:^(flameshot)$"
- ];
- xwayland.force_zero_scaling = true;
- misc = {
- layers_hog_keyboard_focus = false;
- disable_splash_rendering = true;
- force_default_wallpaper = 0;
- vrr = 1;
- };
- layerrule = [ "blur, anyrun" "ignorealpha 0.3, anyrun" ];
- decoration = {
- drop_shadow = "yes";
- shadow_range = 16;
- "col.shadow" = "rgba(00000044)";
-
- dim_inactive = false;
-
- blur = {
- enabled = true;
- size = 8;
- passes = 3;
- noise = 1.0e-2;
- contrast = 0.9;
- brightness = 0.8;
- };
- };
- opengl.nvidia_anti_flicker = true;
- animations = {
- enabled = "yes";
- bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
- animation = [
- "windows, 1, 5, myBezier"
- "windowsOut, 1, 7, default, popin 80%"
- "border, 1, 10, default"
- "fade, 1, 7, default"
- "workspaces, 1, 6, default"
- ];
- };
- };
- };
-
- services.kdeconnect = {
- enable = true;
- indicator = true;
- };
- services.flameshot = {
- enable = true;
- package = pkgs.flameshot.overrideAttrs (final: prev: {
- cmakeFlags = [ "-DUSE_WAYLAND_CLIPBOARD=1" "-DUSE_WAYLAND_GRIM=true" ];
- nativeBuildInputs = prev.nativeBuildInputs
- ++ [ pkgs.libsForQt5.kguiaddons ];
- });
- settings = {
- General = {
- uiColor = "#99d1db";
- showDesktopNotification = false;
- disabledTrayIcon = true;
- };
- };
- };
- programs.ags = {
- enable = true;
- configDir = ./ags;
- };
- xdg.configFile.ags.onChange = ''
- ${pkgs.procps}/bin/pkill -u $USER -USR2 ags || true
- '';
- systemd.user.services.ags = {
- Unit = {
- Description = "ags";
- PartOf = [ "graphical-session.target" "tray.target" ];
- };
- Service = {
- ExecStart = "${pkgs.ags}/bin/ags";
- ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID";
- Restart = "always";
- KillMode = "mixed";
- Environment = "PATH=/run/current-system/sw/bin/:${
- with pkgs;
- lib.makeBinPath [
- swww
- sassc
- glib
- brightnessctl
- ydotool
- kitty
- hyprpicker
- ]
- }";
- };
- Install = { WantedBy = [ "graphical-session.target" ]; };
- };
- programs.kitty = import ./kitty.nix { inherit pkgs; };
- programs.anyrun = import ./anyrun.nix { inherit pkgs; };
- services.udiskie.enable = true;
- services.udiskie.tray = "never";
-
- fonts.fontconfig.enable = true;
- home.packages = with pkgs; [
- # fonts
- noto-fonts
- # essentials
- hyprpicker
- grim
- slurp
- wl-clipboard
- polkit_gnome
- xdg-desktop-portal-gtk
- # qt/kde packages
- qt6.qtwayland
- qt5.qtwayland
- kdePackages.breeze-icons
- # gnome packages
- evince
- gnome.gvfs
- gnome.gnome-keyring
- gnome.nautilus
- gnome.gnome-calendar
- gnome.gnome-characters
- gnome.gnome-contacts
- gnome.gnome-clocks
- gnome.gnome-calculator
- gnome.simple-scan
- gnome.eog
- gnome.geary
- gnome.ghex
- gnome.gnome-weather
- gnome.gnome-keyring
- gnome.gnome-disk-utility
- # fixes
- xorg.xrandr
- ];
-
- dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
- gtk = {
- enable = true;
- theme = {
- name = "adw-gtk3-dark";
- package = pkgs.adw-gtk3;
- };
- #gtk3.extraCss = builtins.readFile ./gtk.css;
- #gtk4.extraCss = builtins.readFile ./gtk.css;
- iconTheme = {
- name = "Tela";
- package = pkgs.tela-icon-theme;
- };
- };
- qt = {
- enable = true;
- platformTheme = "qtct";
- };
-
- programs.fish.loginShellInit =
- # fish
- ''
- Hyprland && echo "goodbye" && exit 0 \
- || echo "$status couldn't launch Hyprland" && tty | grep tty1 \
- && echo "refusing to autologin without Hyprland on tty1" && exit 0 \
- || echo "not on tty1, letting in"
- '';
-
- home = {
- pointerCursor = {
- gtk.enable = true;
- package = pkgs.capitaine-cursors;
- name = "capitaine-cursors";
- };
-
- file.".config/hypr/shaders" = {
- source = ./hypr/shaders;
- recursive = true;
- };
- };
-}
diff --git a/hosts/MONSTER/default.nix b/hosts/MONSTER/default.nix
index e701041..f4d3394 100644
--- a/hosts/MONSTER/default.nix
+++ b/hosts/MONSTER/default.nix
@@ -1,8 +1,5 @@
-# Edit this configuration file to define what should be installed on
-# your system. Help is available in the configuration.nix(5) man page
-# and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, username, ... }: {
- imports = [ ./nvidia.nix ./hardware-configuration.nix ];
+ imports = [ ./hardware-configuration.nix ];
nix = {
settings.experimental-features = [ "nix-command" "flakes" ];
@@ -15,118 +12,47 @@
# Bootloader.
boot = {
+ quiet.enable = true;
+
kernelPackages = pkgs.linuxPackages_latest;
loader = {
- timeout = 0;
systemd-boot = {
enable = true;
editor = false;
configurationLimit = 10;
- consoleMode = "max";
};
efi.canTouchEfiVariables = true;
};
supportedFilesystems = [ "ntfs" ];
-
- # Silent Boot
- kernelParams = [
- # Redirect all kernel messages to a console off screen
- #"fbcon=vc:2-6"
- #"console=tty1"
-
- "video=3840x2160@144"
- # "splash"
- # "quiet"
-
- #"rd.udev.log_level=3"
- #"rd.systemd.show_status=false"
- #"udev.log_priority=3"
- #"boot.shell_on_fail"
- #"vt.global_cursor_default=0" # no cursor blinking
- ];
- consoleLogLevel = 0;
- initrd.verbose = false;
-
- # Virtual Camera/Mic
- kernelModules = [ "v4l2loopback" "snd-aloop" "sg" ];
- extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback.out ];
- extraModprobeConfig = ''
- options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"
- '';
};
- # Audio
- hardware.pulseaudio.enable = false;
- security.rtkit.enable = true;
- services.pipewire = {
- enable = true;
- alsa.enable = true;
- alsa.support32Bit = true;
- pulse.enable = true;
- jack.enable = true;
+ desktops.hyprland.enable = true;
+ locale.preset.theaninova.enable = true;
+
+ hardware = {
+ nvidia.preset.proprietary.enable = true;
+ audio.preset.pipewire.enable = true;
+ cc1.enable = true;
+ fv43u.enable = true;
+ virtual-camera.enable = true;
+ # https://github.com/NixOS/nixpkgs/pull/300682
+ # hid-fanatecff.enable = true;
};
- # https://github.com/NixOS/nixpkgs/pull/300682
- # hardware.hid-fanatecff.enable = true;
- hardware.gbmonctl.enable = true;
-
- hardware.sane = {
- enable = true;
- extraBackends = [ pkgs.sane-airscan ];
- };
- services.printing.enable = true;
- services.avahi = {
- enable = true;
- nssmdns4 = true;
- openFirewall = true;
- };
-
- services.dbus.enable = true;
- xdg.portal = {
- enable = true;
- extraPortals = [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-kde ];
- };
-
- time.timeZone = "Europe/Berlin";
- i18n = {
- inputMethod = {
- enabled = "ibus";
- ibus.engines = with pkgs.ibus-engines; [ anthy ];
+ fonts = {
+ fira-code = {
+ enable = true;
+ default = true;
};
- defaultLocale = "en_GB.UTF-8";
- extraLocaleSettings = {
- LC_ADDRESS = "de_DE.UTF-8";
- LC_IDENTIFICATION = "de_DE.UTF-8";
- LC_MEASUREMENT = "de_DE.UTF-8";
- LC_MONETARY = "de_DE.UTF-8";
- LC_NAME = "de_DE.UTF-8";
- LC_NUMERIC = "de_DE.UTF-8";
- LC_PAPER = "de_DE.UTF-8";
- LC_TELEPHONE = "de_DE.UTF-8";
- LC_TIME = "de_DE.UTF-8";
+ noto-sans = {
+ enable = true;
+ default = true;
};
+ nerdfonts.enable = true;
};
- # Configure keymap in X11
- console.useXkbConfig = true;
- services.xserver.xkb = {
- layout = "cc1-thea";
- extraLayouts.cc1-thea = {
- description = "A CC1 optimized layout";
- languages = [ "eng" "ger" ];
- symbolsFile = ../../modules/cc1-thea;
- };
- };
-
- services.pcscd.enable = true;
-
- # nautilus on non-gnome
- services.gvfs.enable = true;
- # fix pinentry on non-gnome
- services.dbus.packages = with pkgs; [ gcr ];
- services.gnome.gnome-online-accounts.enable = true;
- services.gnome.evolution-data-server.enable = true;
+ services.airprint.enable = true;
services.udev.packages = with pkgs; [ oversteer android-udev-rules ];
@@ -135,14 +61,7 @@
setSocketVariable = true;
};
- # Define a user account. Don't forget to set a password with ‘passwd’.
- services.getty.autologinUser = "${username}";
- services.getty.extraArgs = [ "--noclear" "--noissue" "--nonewline" ];
- services.getty.loginOptions = "-p -f -- \\u"; # preserve environment
-
- programs.hyprland.enable = true;
programs.fish.enable = true;
- programs.kdeconnect.enable = true;
security.sudo.configFile = ''
Defaults env_reset,pwfeedback,passprompt=" "
'';
@@ -154,7 +73,6 @@
"wheel"
"audio"
"video"
- "dialout"
"plugdev"
"scanner"
"lp"
@@ -165,7 +83,6 @@
};
# List packages installed in system profile. To search, run:
- environment.sessionVariables.NIXOS_OZONE_WL = "1";
environment.systemPackages = with pkgs; [
gamemode
# Essential utils
@@ -194,26 +111,6 @@
docker-compose
];
- fonts = {
- packages = with pkgs; [
- noto-fonts
- noto-fonts-cjk
- noto-fonts-emoji
- fira-code
- (nerdfonts.override {
- fonts = [ "FiraCode" "JetBrainsMono" "Noto" "NerdFontsSymbolsOnly" ];
- })
- ];
- fontconfig = {
- defaultFonts = {
- monospace = [ "FiraCode Nerd Font" ];
- sansSerif = [ "Noto Sans Nerd Font" ];
- };
- localConf = builtins.readFile ./fontconfig.xml;
- subpixel.rgba = "bgr";
- };
- };
-
networking = {
firewall = {
allowedTCPPorts = [ 8100 5037 5173 ];
@@ -246,4 +143,6 @@
device = "/dev/sda2";
fsType = "ntfs";
};
+
+ system.stateVersion = "23.05";
}
diff --git a/hosts/MONSTER/fontconfig.xml b/hosts/MONSTER/fontconfig.xml
deleted file mode 100644
index 86d032c..0000000
--- a/hosts/MONSTER/fontconfig.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- Fira
-
-
-
- zero
- onum
- ss04
- cv19
- cv23
- ss09
- ss06
- ss07
- ss10
-
-
diff --git a/home/desktops/none/default.nix b/hosts/MONSTER/home.nix
similarity index 100%
rename from home/desktops/none/default.nix
rename to hosts/MONSTER/home.nix
diff --git a/hosts/MONSTER/nvidia.nix b/hosts/MONSTER/nvidia.nix
deleted file mode 100644
index 3ddf6f8..0000000
--- a/hosts/MONSTER/nvidia.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ config, lib, pkgs, ... }: {
- hardware.opengl = {
- enable = true;
- driSupport = true;
- driSupport32Bit = true;
- extraPackages = with pkgs; [ libvdpau-va-gl nvidia-vaapi-driver ];
- };
-
- services.xserver.videoDrivers = [ "nvidia" ];
-
- boot.kernelParams = [ "nvidia_drm.fbdev=1" ];
- boot.kernelModules = [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ];
- boot.initrd.kernelModules =
- [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ];
-
- hardware.nvidia = {
- modesetting.enable = true;
- # seems to cause crashes on sleep
- powerManagement.enable = false;
- open = true;
- nvidiaSettings = false;
- # no idea if this actually does anything...
- nvidiaPersistenced = false;
- };
-
- environment = {
- variables = {
- VDPAU_DRIVER = "va_gl";
- LIBVA_DRIVER_NAME = "nvidia";
- };
- systemPackages = with pkgs; [
- glxinfo
- nvtopPackages.nvidia
- libva-utils
- vulkan-tools
- ];
- };
-}
diff --git a/home/clean-home-dir.nix b/modules/home-manager/clean-home-dir.nix
similarity index 100%
rename from home/clean-home-dir.nix
rename to modules/home-manager/clean-home-dir.nix
diff --git a/home/default-apps.nix b/modules/home-manager/default-apps.nix
similarity index 100%
rename from home/default-apps.nix
rename to modules/home-manager/default-apps.nix
diff --git a/home/default.nix b/modules/home-manager/default.nix
similarity index 67%
rename from home/default.nix
rename to modules/home-manager/default.nix
index 1af6a9a..2718e6b 100644
--- a/home/default.nix
+++ b/modules/home-manager/default.nix
@@ -1,6 +1,7 @@
-{ username, desktop, stateVersion, osConfig, inputs, ... }: rec {
+{ username, desktop, stateVersion, osConfig, inputs, ... }: {
home = {
- inherit username stateVersion;
+ stateVersion = osConfig.system.stateVersion;
+ inherit username;
homeDirectory = "/home/${username}";
};
imports = [
@@ -13,6 +14,6 @@
./packages
./programs
./services
- ./desktops/${desktop}
+ ./desktops/hyprland
];
}
diff --git a/home/desktops/hyprland/ags/.eslintrc.yml b/modules/home-manager/desktops/hyprland/ags/.eslintrc.yml
similarity index 100%
rename from home/desktops/hyprland/ags/.eslintrc.yml
rename to modules/home-manager/desktops/hyprland/ags/.eslintrc.yml
diff --git a/home/desktops/hyprland/ags/.gitignore b/modules/home-manager/desktops/hyprland/ags/.gitignore
similarity index 100%
rename from home/desktops/hyprland/ags/.gitignore
rename to modules/home-manager/desktops/hyprland/ags/.gitignore
diff --git a/home/desktops/hyprland/ags/.stylelintrc.yml b/modules/home-manager/desktops/hyprland/ags/.stylelintrc.yml
similarity index 100%
rename from home/desktops/hyprland/ags/.stylelintrc.yml
rename to modules/home-manager/desktops/hyprland/ags/.stylelintrc.yml
diff --git a/home/desktops/hyprland/ags/assets/aylur.jpg b/modules/home-manager/desktops/hyprland/ags/assets/aylur.jpg
similarity index 100%
rename from home/desktops/hyprland/ags/assets/aylur.jpg
rename to modules/home-manager/desktops/hyprland/ags/assets/aylur.jpg
diff --git a/home/desktops/hyprland/ags/assets/ivory.png b/modules/home-manager/desktops/hyprland/ags/assets/ivory.png
similarity index 100%
rename from home/desktops/hyprland/ags/assets/ivory.png
rename to modules/home-manager/desktops/hyprland/ags/assets/ivory.png
diff --git a/home/desktops/hyprland/ags/assets/kitty.jpeg b/modules/home-manager/desktops/hyprland/ags/assets/kitty.jpeg
similarity index 100%
rename from home/desktops/hyprland/ags/assets/kitty.jpeg
rename to modules/home-manager/desktops/hyprland/ags/assets/kitty.jpeg
diff --git a/home/desktops/hyprland/ags/assets/kittybl.jpeg b/modules/home-manager/desktops/hyprland/ags/assets/kittybl.jpeg
similarity index 100%
rename from home/desktops/hyprland/ags/assets/kittybl.jpeg
rename to modules/home-manager/desktops/hyprland/ags/assets/kittybl.jpeg
diff --git a/home/desktops/hyprland/ags/assets/leaves.jpg b/modules/home-manager/desktops/hyprland/ags/assets/leaves.jpg
similarity index 100%
rename from home/desktops/hyprland/ags/assets/leaves.jpg
rename to modules/home-manager/desktops/hyprland/ags/assets/leaves.jpg
diff --git a/home/desktops/hyprland/ags/assets/space.jpg b/modules/home-manager/desktops/hyprland/ags/assets/space.jpg
similarity index 100%
rename from home/desktops/hyprland/ags/assets/space.jpg
rename to modules/home-manager/desktops/hyprland/ags/assets/space.jpg
diff --git a/home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Evening_UHD2.png b/modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Evening_UHD2.png
similarity index 100%
rename from home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Evening_UHD2.png
rename to modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Evening_UHD2.png
diff --git a/home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_NoDeer_Evening_UHD2.png b/modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_NoDeer_Evening_UHD2.png
similarity index 100%
rename from home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_NoDeer_Evening_UHD2.png
rename to modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_NoDeer_Evening_UHD2.png
diff --git a/home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_NoDeer_UHD2.png b/modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_NoDeer_UHD2.png
similarity index 100%
rename from home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_NoDeer_UHD2.png
rename to modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_NoDeer_UHD2.png
diff --git a/home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Teal_NoDeer_UHD2.png b/modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Teal_NoDeer_UHD2.png
similarity index 100%
rename from home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Teal_NoDeer_UHD2.png
rename to modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Teal_NoDeer_UHD2.png
diff --git a/home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Teal_UHD2.png b/modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Teal_UHD2.png
similarity index 100%
rename from home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Teal_UHD2.png
rename to modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_Teal_UHD2.png
diff --git a/home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_UHD2.png b/modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_UHD2.png
similarity index 100%
rename from home/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_UHD2.png
rename to modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/Lakeside_2019_UHD2.png
diff --git a/home/desktops/hyprland/ags/assets/wallpapers/Lakeside/lakeside_2019_midnight.png b/modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/lakeside_2019_midnight.png
similarity index 100%
rename from home/desktops/hyprland/ags/assets/wallpapers/Lakeside/lakeside_2019_midnight.png
rename to modules/home-manager/desktops/hyprland/ags/assets/wallpapers/Lakeside/lakeside_2019_midnight.png
diff --git a/home/desktops/hyprland/ags/config.js b/modules/home-manager/desktops/hyprland/ags/config.js
similarity index 100%
rename from home/desktops/hyprland/ags/config.js
rename to modules/home-manager/desktops/hyprland/ags/config.js
diff --git a/home/desktops/hyprland/ags/js/about/about.js b/modules/home-manager/desktops/hyprland/ags/js/about/about.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/about/about.js
rename to modules/home-manager/desktops/hyprland/ags/js/about/about.js
diff --git a/home/desktops/hyprland/ags/js/applauncher/AppItem.js b/modules/home-manager/desktops/hyprland/ags/js/applauncher/AppItem.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/applauncher/AppItem.js
rename to modules/home-manager/desktops/hyprland/ags/js/applauncher/AppItem.js
diff --git a/home/desktops/hyprland/ags/js/applauncher/Applauncher.js b/modules/home-manager/desktops/hyprland/ags/js/applauncher/Applauncher.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/applauncher/Applauncher.js
rename to modules/home-manager/desktops/hyprland/ags/js/applauncher/Applauncher.js
diff --git a/home/desktops/hyprland/ags/js/bar/PanelButton.js b/modules/home-manager/desktops/hyprland/ags/js/bar/PanelButton.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/PanelButton.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/PanelButton.js
diff --git a/home/desktops/hyprland/ags/js/bar/TopBar.js b/modules/home-manager/desktops/hyprland/ags/js/bar/TopBar.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/TopBar.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/TopBar.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/BatteryBar.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/BatteryBar.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/BatteryBar.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/BatteryBar.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/ColorPicker.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/ColorPicker.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/ColorPicker.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/ColorPicker.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/DateButton.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/DateButton.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/DateButton.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/DateButton.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/FocusedClient.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/FocusedClient.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/FocusedClient.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/FocusedClient.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/MediaIndicator.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/MediaIndicator.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/MediaIndicator.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/MediaIndicator.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/NotificationIndicator.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/NotificationIndicator.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/NotificationIndicator.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/NotificationIndicator.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/OverviewButton.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/OverviewButton.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/OverviewButton.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/OverviewButton.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/PowerMenu.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/PowerMenu.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/PowerMenu.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/PowerMenu.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/ScreenRecord.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/ScreenRecord.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/ScreenRecord.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/ScreenRecord.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/SubMenu.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/SubMenu.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/SubMenu.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/SubMenu.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/SysTray.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/SysTray.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/SysTray.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/SysTray.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/System.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/System.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/System.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/System.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/SystemIndicators.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/SystemIndicators.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/SystemIndicators.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/SystemIndicators.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/Taskbar.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/Taskbar.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/Taskbar.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/Taskbar.js
diff --git a/home/desktops/hyprland/ags/js/bar/buttons/Workspaces.js b/modules/home-manager/desktops/hyprland/ags/js/bar/buttons/Workspaces.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/bar/buttons/Workspaces.js
rename to modules/home-manager/desktops/hyprland/ags/js/bar/buttons/Workspaces.js
diff --git a/home/desktops/hyprland/ags/js/dashboard/Dashboard.js b/modules/home-manager/desktops/hyprland/ags/js/dashboard/Dashboard.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/dashboard/Dashboard.js
rename to modules/home-manager/desktops/hyprland/ags/js/dashboard/Dashboard.js
diff --git a/home/desktops/hyprland/ags/js/dashboard/DateColumn.js b/modules/home-manager/desktops/hyprland/ags/js/dashboard/DateColumn.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/dashboard/DateColumn.js
rename to modules/home-manager/desktops/hyprland/ags/js/dashboard/DateColumn.js
diff --git a/home/desktops/hyprland/ags/js/dashboard/NotificationColumn.js b/modules/home-manager/desktops/hyprland/ags/js/dashboard/NotificationColumn.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/dashboard/NotificationColumn.js
rename to modules/home-manager/desktops/hyprland/ags/js/dashboard/NotificationColumn.js
diff --git a/home/desktops/hyprland/ags/js/desktop/Desktop.js b/modules/home-manager/desktops/hyprland/ags/js/desktop/Desktop.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/desktop/Desktop.js
rename to modules/home-manager/desktops/hyprland/ags/js/desktop/Desktop.js
diff --git a/home/desktops/hyprland/ags/js/desktop/DesktopMenu.js b/modules/home-manager/desktops/hyprland/ags/js/desktop/DesktopMenu.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/desktop/DesktopMenu.js
rename to modules/home-manager/desktops/hyprland/ags/js/desktop/DesktopMenu.js
diff --git a/home/desktops/hyprland/ags/js/dock/Dock.js b/modules/home-manager/desktops/hyprland/ags/js/dock/Dock.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/dock/Dock.js
rename to modules/home-manager/desktops/hyprland/ags/js/dock/Dock.js
diff --git a/home/desktops/hyprland/ags/js/dock/FloatingDock.js b/modules/home-manager/desktops/hyprland/ags/js/dock/FloatingDock.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/dock/FloatingDock.js
rename to modules/home-manager/desktops/hyprland/ags/js/dock/FloatingDock.js
diff --git a/home/desktops/hyprland/ags/js/icons.js b/modules/home-manager/desktops/hyprland/ags/js/icons.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/icons.js
rename to modules/home-manager/desktops/hyprland/ags/js/icons.js
diff --git a/home/desktops/hyprland/ags/js/lockscreen/Lockscreen.js b/modules/home-manager/desktops/hyprland/ags/js/lockscreen/Lockscreen.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/lockscreen/Lockscreen.js
rename to modules/home-manager/desktops/hyprland/ags/js/lockscreen/Lockscreen.js
diff --git a/home/desktops/hyprland/ags/js/lockscreen/auth.py b/modules/home-manager/desktops/hyprland/ags/js/lockscreen/auth.py
similarity index 100%
rename from home/desktops/hyprland/ags/js/lockscreen/auth.py
rename to modules/home-manager/desktops/hyprland/ags/js/lockscreen/auth.py
diff --git a/home/desktops/hyprland/ags/js/main.js b/modules/home-manager/desktops/hyprland/ags/js/main.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/main.js
rename to modules/home-manager/desktops/hyprland/ags/js/main.js
diff --git a/home/desktops/hyprland/ags/js/misc/Avatar.js b/modules/home-manager/desktops/hyprland/ags/js/misc/Avatar.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/Avatar.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/Avatar.js
diff --git a/home/desktops/hyprland/ags/js/misc/BatteryIcon.js b/modules/home-manager/desktops/hyprland/ags/js/misc/BatteryIcon.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/BatteryIcon.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/BatteryIcon.js
diff --git a/home/desktops/hyprland/ags/js/misc/Clock.js b/modules/home-manager/desktops/hyprland/ags/js/misc/Clock.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/Clock.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/Clock.js
diff --git a/home/desktops/hyprland/ags/js/misc/FontIcon.js b/modules/home-manager/desktops/hyprland/ags/js/misc/FontIcon.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/FontIcon.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/FontIcon.js
diff --git a/home/desktops/hyprland/ags/js/misc/HoverRevealer.js b/modules/home-manager/desktops/hyprland/ags/js/misc/HoverRevealer.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/HoverRevealer.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/HoverRevealer.js
diff --git a/home/desktops/hyprland/ags/js/misc/IconBrowser.js b/modules/home-manager/desktops/hyprland/ags/js/misc/IconBrowser.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/IconBrowser.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/IconBrowser.js
diff --git a/home/desktops/hyprland/ags/js/misc/Notification.js b/modules/home-manager/desktops/hyprland/ags/js/misc/Notification.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/Notification.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/Notification.js
diff --git a/home/desktops/hyprland/ags/js/misc/PopupWindow.js b/modules/home-manager/desktops/hyprland/ags/js/misc/PopupWindow.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/PopupWindow.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/PopupWindow.js
diff --git a/home/desktops/hyprland/ags/js/misc/Progress.js b/modules/home-manager/desktops/hyprland/ags/js/misc/Progress.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/Progress.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/Progress.js
diff --git a/home/desktops/hyprland/ags/js/misc/RegularWindow.js b/modules/home-manager/desktops/hyprland/ags/js/misc/RegularWindow.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/RegularWindow.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/RegularWindow.js
diff --git a/home/desktops/hyprland/ags/js/misc/mpris.js b/modules/home-manager/desktops/hyprland/ags/js/misc/mpris.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/misc/mpris.js
rename to modules/home-manager/desktops/hyprland/ags/js/misc/mpris.js
diff --git a/home/desktops/hyprland/ags/js/notifications/Notifications.js b/modules/home-manager/desktops/hyprland/ags/js/notifications/Notifications.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/notifications/Notifications.js
rename to modules/home-manager/desktops/hyprland/ags/js/notifications/Notifications.js
diff --git a/home/desktops/hyprland/ags/js/options.js b/modules/home-manager/desktops/hyprland/ags/js/options.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/options.js
rename to modules/home-manager/desktops/hyprland/ags/js/options.js
diff --git a/home/desktops/hyprland/ags/js/osd/OSD.js b/modules/home-manager/desktops/hyprland/ags/js/osd/OSD.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/osd/OSD.js
rename to modules/home-manager/desktops/hyprland/ags/js/osd/OSD.js
diff --git a/home/desktops/hyprland/ags/js/overview/Client.js b/modules/home-manager/desktops/hyprland/ags/js/overview/Client.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/overview/Client.js
rename to modules/home-manager/desktops/hyprland/ags/js/overview/Client.js
diff --git a/home/desktops/hyprland/ags/js/overview/Overview.js b/modules/home-manager/desktops/hyprland/ags/js/overview/Overview.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/overview/Overview.js
rename to modules/home-manager/desktops/hyprland/ags/js/overview/Overview.js
diff --git a/home/desktops/hyprland/ags/js/overview/Workspace.js b/modules/home-manager/desktops/hyprland/ags/js/overview/Workspace.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/overview/Workspace.js
rename to modules/home-manager/desktops/hyprland/ags/js/overview/Workspace.js
diff --git a/home/desktops/hyprland/ags/js/powermenu/PowerMenu.js b/modules/home-manager/desktops/hyprland/ags/js/powermenu/PowerMenu.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/powermenu/PowerMenu.js
rename to modules/home-manager/desktops/hyprland/ags/js/powermenu/PowerMenu.js
diff --git a/home/desktops/hyprland/ags/js/powermenu/ShadedPopup.js b/modules/home-manager/desktops/hyprland/ags/js/powermenu/ShadedPopup.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/powermenu/ShadedPopup.js
rename to modules/home-manager/desktops/hyprland/ags/js/powermenu/ShadedPopup.js
diff --git a/home/desktops/hyprland/ags/js/powermenu/Verification.js b/modules/home-manager/desktops/hyprland/ags/js/powermenu/Verification.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/powermenu/Verification.js
rename to modules/home-manager/desktops/hyprland/ags/js/powermenu/Verification.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/QuickSettings.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/QuickSettings.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/QuickSettings.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/QuickSettings.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/ToggleButton.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/ToggleButton.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/ToggleButton.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/ToggleButton.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/AsusProfile.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/AsusProfile.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/AsusProfile.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/AsusProfile.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/Bluetooth.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Bluetooth.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/Bluetooth.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Bluetooth.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/Brightness.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Brightness.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/Brightness.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Brightness.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/DND.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/DND.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/DND.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/DND.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/Header.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Header.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/Header.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Header.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/Media.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Media.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/Media.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Media.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/MicMute.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/MicMute.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/MicMute.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/MicMute.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/Network.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Network.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/Network.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Network.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/Theme.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Theme.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/Theme.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Theme.js
diff --git a/home/desktops/hyprland/ags/js/quicksettings/widgets/Volume.js b/modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Volume.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/quicksettings/widgets/Volume.js
rename to modules/home-manager/desktops/hyprland/ags/js/quicksettings/widgets/Volume.js
diff --git a/home/desktops/hyprland/ags/js/screencorner/ScreenCorners.js b/modules/home-manager/desktops/hyprland/ags/js/screencorner/ScreenCorners.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/screencorner/ScreenCorners.js
rename to modules/home-manager/desktops/hyprland/ags/js/screencorner/ScreenCorners.js
diff --git a/home/desktops/hyprland/ags/js/services/asusctl.js b/modules/home-manager/desktops/hyprland/ags/js/services/asusctl.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/services/asusctl.js
rename to modules/home-manager/desktops/hyprland/ags/js/services/asusctl.js
diff --git a/home/desktops/hyprland/ags/js/services/brightness.js b/modules/home-manager/desktops/hyprland/ags/js/services/brightness.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/services/brightness.js
rename to modules/home-manager/desktops/hyprland/ags/js/services/brightness.js
diff --git a/home/desktops/hyprland/ags/js/services/colorpicker.js b/modules/home-manager/desktops/hyprland/ags/js/services/colorpicker.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/services/colorpicker.js
rename to modules/home-manager/desktops/hyprland/ags/js/services/colorpicker.js
diff --git a/home/desktops/hyprland/ags/js/services/lockscreen.js b/modules/home-manager/desktops/hyprland/ags/js/services/lockscreen.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/services/lockscreen.js
rename to modules/home-manager/desktops/hyprland/ags/js/services/lockscreen.js
diff --git a/home/desktops/hyprland/ags/js/services/onScreenIndicator.js b/modules/home-manager/desktops/hyprland/ags/js/services/onScreenIndicator.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/services/onScreenIndicator.js
rename to modules/home-manager/desktops/hyprland/ags/js/services/onScreenIndicator.js
diff --git a/home/desktops/hyprland/ags/js/services/powermenu.js b/modules/home-manager/desktops/hyprland/ags/js/services/powermenu.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/services/powermenu.js
rename to modules/home-manager/desktops/hyprland/ags/js/services/powermenu.js
diff --git a/home/desktops/hyprland/ags/js/services/screenrecord.js b/modules/home-manager/desktops/hyprland/ags/js/services/screenrecord.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/services/screenrecord.js
rename to modules/home-manager/desktops/hyprland/ags/js/services/screenrecord.js
diff --git a/home/desktops/hyprland/ags/js/settings/SettingsDialog.js b/modules/home-manager/desktops/hyprland/ags/js/settings/SettingsDialog.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/settings/SettingsDialog.js
rename to modules/home-manager/desktops/hyprland/ags/js/settings/SettingsDialog.js
diff --git a/home/desktops/hyprland/ags/js/settings/globals.js b/modules/home-manager/desktops/hyprland/ags/js/settings/globals.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/settings/globals.js
rename to modules/home-manager/desktops/hyprland/ags/js/settings/globals.js
diff --git a/home/desktops/hyprland/ags/js/settings/hyprland.js b/modules/home-manager/desktops/hyprland/ags/js/settings/hyprland.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/settings/hyprland.js
rename to modules/home-manager/desktops/hyprland/ags/js/settings/hyprland.js
diff --git a/home/desktops/hyprland/ags/js/settings/option.js b/modules/home-manager/desktops/hyprland/ags/js/settings/option.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/settings/option.js
rename to modules/home-manager/desktops/hyprland/ags/js/settings/option.js
diff --git a/home/desktops/hyprland/ags/js/settings/scss.js b/modules/home-manager/desktops/hyprland/ags/js/settings/scss.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/settings/scss.js
rename to modules/home-manager/desktops/hyprland/ags/js/settings/scss.js
diff --git a/home/desktops/hyprland/ags/js/settings/setup.js b/modules/home-manager/desktops/hyprland/ags/js/settings/setup.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/settings/setup.js
rename to modules/home-manager/desktops/hyprland/ags/js/settings/setup.js
diff --git a/home/desktops/hyprland/ags/js/settings/theme.js b/modules/home-manager/desktops/hyprland/ags/js/settings/theme.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/settings/theme.js
rename to modules/home-manager/desktops/hyprland/ags/js/settings/theme.js
diff --git a/home/desktops/hyprland/ags/js/settings/wallpaper.js b/modules/home-manager/desktops/hyprland/ags/js/settings/wallpaper.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/settings/wallpaper.js
rename to modules/home-manager/desktops/hyprland/ags/js/settings/wallpaper.js
diff --git a/home/desktops/hyprland/ags/js/themes.js b/modules/home-manager/desktops/hyprland/ags/js/themes.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/themes.js
rename to modules/home-manager/desktops/hyprland/ags/js/themes.js
diff --git a/home/desktops/hyprland/ags/js/utils.js b/modules/home-manager/desktops/hyprland/ags/js/utils.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/utils.js
rename to modules/home-manager/desktops/hyprland/ags/js/utils.js
diff --git a/home/desktops/hyprland/ags/js/variables.js b/modules/home-manager/desktops/hyprland/ags/js/variables.js
similarity index 100%
rename from home/desktops/hyprland/ags/js/variables.js
rename to modules/home-manager/desktops/hyprland/ags/js/variables.js
diff --git a/home/desktops/hyprland/ags/package.json b/modules/home-manager/desktops/hyprland/ags/package.json
similarity index 100%
rename from home/desktops/hyprland/ags/package.json
rename to modules/home-manager/desktops/hyprland/ags/package.json
diff --git a/home/desktops/hyprland/ags/scss/common/a11y-button.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/a11y-button.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/a11y-button.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/a11y-button.scss
diff --git a/home/desktops/hyprland/ags/scss/common/button.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/button.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/button.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/button.scss
diff --git a/home/desktops/hyprland/ags/scss/common/floating-widget.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/floating-widget.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/floating-widget.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/floating-widget.scss
diff --git a/home/desktops/hyprland/ags/scss/common/hidden.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/hidden.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/hidden.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/hidden.scss
diff --git a/home/desktops/hyprland/ags/scss/common/menu.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/menu.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/menu.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/menu.scss
diff --git a/home/desktops/hyprland/ags/scss/common/scrollable.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/scrollable.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/scrollable.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/scrollable.scss
diff --git a/home/desktops/hyprland/ags/scss/common/slider.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/slider.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/slider.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/slider.scss
diff --git a/home/desktops/hyprland/ags/scss/common/spacing.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/spacing.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/spacing.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/spacing.scss
diff --git a/home/desktops/hyprland/ags/scss/common/switch.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/switch.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/switch.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/switch.scss
diff --git a/home/desktops/hyprland/ags/scss/common/text-border.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/text-border.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/text-border.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/text-border.scss
diff --git a/home/desktops/hyprland/ags/scss/common/tooltip.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/tooltip.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/tooltip.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/tooltip.scss
diff --git a/home/desktops/hyprland/ags/scss/common/unset.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/unset.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/unset.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/unset.scss
diff --git a/home/desktops/hyprland/ags/scss/common/widget.scss b/modules/home-manager/desktops/hyprland/ags/scss/common/widget.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/common/widget.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/common/widget.scss
diff --git a/home/desktops/hyprland/ags/scss/main.scss b/modules/home-manager/desktops/hyprland/ags/scss/main.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/main.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/main.scss
diff --git a/home/desktops/hyprland/ags/scss/variables.scss b/modules/home-manager/desktops/hyprland/ags/scss/variables.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/variables.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/variables.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/about.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/about.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/about.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/about.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/applauncher.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/applauncher.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/applauncher.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/applauncher.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/bar.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/bar.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/bar.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/bar.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/dashboard.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/dashboard.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/dashboard.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/dashboard.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/desktop.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/desktop.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/desktop.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/desktop.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/dock.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/dock.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/dock.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/dock.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/lockscreen.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/lockscreen.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/lockscreen.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/lockscreen.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/media.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/media.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/media.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/media.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/notifications.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/notifications.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/notifications.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/notifications.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/osd.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/osd.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/osd.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/osd.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/overview.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/overview.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/overview.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/overview.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/powermenu.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/powermenu.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/powermenu.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/powermenu.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/quicksettings.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/quicksettings.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/quicksettings.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/quicksettings.scss
diff --git a/home/desktops/hyprland/ags/scss/widgets/settings.scss b/modules/home-manager/desktops/hyprland/ags/scss/widgets/settings.scss
similarity index 100%
rename from home/desktops/hyprland/ags/scss/widgets/settings.scss
rename to modules/home-manager/desktops/hyprland/ags/scss/widgets/settings.scss
diff --git a/home/desktops/hyprland/ags/tsconfig.json b/modules/home-manager/desktops/hyprland/ags/tsconfig.json
similarity index 100%
rename from home/desktops/hyprland/ags/tsconfig.json
rename to modules/home-manager/desktops/hyprland/ags/tsconfig.json
diff --git a/home/desktops/hyprland/anyrun.css b/modules/home-manager/desktops/hyprland/anyrun.css
similarity index 100%
rename from home/desktops/hyprland/anyrun.css
rename to modules/home-manager/desktops/hyprland/anyrun.css
diff --git a/home/desktops/hyprland/anyrun.nix b/modules/home-manager/desktops/hyprland/anyrun.nix
similarity index 100%
rename from home/desktops/hyprland/anyrun.nix
rename to modules/home-manager/desktops/hyprland/anyrun.nix
diff --git a/modules/home-manager/desktops/hyprland/default.nix b/modules/home-manager/desktops/hyprland/default.nix
new file mode 100644
index 0000000..50ae424
--- /dev/null
+++ b/modules/home-manager/desktops/hyprland/default.nix
@@ -0,0 +1,263 @@
+{ config, pkgs, lib, osConfig, ... }: {
+ config = lib.mkIf osConfig.desktops.hyprland.enable {
+ wayland.windowManager.hyprland = {
+ enable = true;
+ systemd = {
+ enable = true;
+ variables = [ "--all" ];
+ };
+ settings = {
+ env = [
+ "LIBVA_DRIVER_NAME,nvidia"
+ "XDG_SESSION_TYPE,wayland"
+ "GBM_BACKEND,nvidia-drm"
+ "__GLX_VENDOR_LIBRARY_NAME,nvidia"
+ "WLR_NO_HARDWARE_CURSORS,1"
+ "NIXOS_OZONE_WL,1"
+ # Gnome file manager fix
+ "GIO_EXTRA_MODULES,${pkgs.gnome.gvfs}/lib/gio/modules"
+ ];
+ exec-once = [
+ "systemctl --user start hyprland-session.target"
+ "gnome-keyring-daemon --start --components=secrets"
+ "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
+ ];
+ general = {
+ layout = "master";
+ resize_on_border = true;
+ };
+ master = {
+ orientation = "center";
+ new_is_master = true;
+ always_center_master = true;
+ mfact = 0.4;
+ };
+ input = {
+ accel_profile = "flat";
+ kb_layout = "cc1-thea";
+ };
+ bind = import ./keybinds.nix;
+ bindm = import ./mousebinds.nix;
+ bindr = [ "SUPER,SUPER_L,exec,pkill anyrun || anyrun" ];
+ monitor = [ "DP-1,highrr,0x0,1" "DP-1,addreserved,250,0,0,0" ];
+ workspace = [
+ "special:calc,border:false,gapsout:200,on-created-empty:[noanim;silent] kitty -e qalc"
+ ];
+ windowrulev2 = let
+ firefoxPip = "class:^(firefox)$,title:^(Picture-in-Picture)$";
+ firefoxPipInitial = "class:^(firefox)$,title:^(Firefox)$";
+ in [
+ "keepaspectratio,${firefoxPip}"
+ "noborder,${firefoxPip}"
+ "float,${firefoxPip}"
+ "float,${firefoxPipInitial}"
+ "pin,${firefoxPip}"
+ "pin,${firefoxPipInitial}"
+ "fakefullscreen,${firefoxPip}"
+ "fakefullscreen,${firefoxPipInitial}"
+ "move 22 72,${firefoxPip}"
+ "move 22 72,${firefoxPipInitial}"
+ # For some reason it really wants to be maximized
+ "suppressevent maximize,class:^(neovide)$"
+ # pinentry
+ "dimaround,class:^(gcr-prompter)$"
+ "noborder,class:^(gcr-prompter)$"
+ "rounding 10,class:^(gcr-prompter)$"
+ "animation slide,class:^(gcr-prompter)$"
+ # Flameshot fixes
+ "float,class:^(flameshot)$"
+ "animation fade,class:^(flameshot)$"
+ ];
+ xwayland.force_zero_scaling = true;
+ misc = {
+ layers_hog_keyboard_focus = false;
+ disable_splash_rendering = true;
+ force_default_wallpaper = 0;
+ vrr = 1;
+ };
+ layerrule = [ "blur, anyrun" "ignorealpha 0.3, anyrun" ];
+ decoration = {
+ drop_shadow = "yes";
+ shadow_range = 16;
+ "col.shadow" = "rgba(00000044)";
+
+ dim_inactive = false;
+
+ blur = {
+ enabled = true;
+ size = 8;
+ passes = 3;
+ noise = 1.0e-2;
+ contrast = 0.9;
+ brightness = 0.8;
+ };
+ };
+ opengl.nvidia_anti_flicker = true;
+ animations = {
+ enabled = "yes";
+ bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
+ animation = [
+ "windows, 1, 5, myBezier"
+ "windowsOut, 1, 7, default, popin 80%"
+ "border, 1, 10, default"
+ "fade, 1, 7, default"
+ "workspaces, 1, 6, default"
+ ];
+ };
+ };
+ };
+
+ services.kdeconnect = {
+ enable = true;
+ indicator = true;
+ };
+ services.flameshot = {
+ enable = true;
+ package = pkgs.flameshot.overrideAttrs (final: prev: {
+ cmakeFlags = [ "-DUSE_WAYLAND_CLIPBOARD=1" "-DUSE_WAYLAND_GRIM=true" ];
+ nativeBuildInputs = prev.nativeBuildInputs
+ ++ [ pkgs.libsForQt5.kguiaddons ];
+ });
+ settings = {
+ General = {
+ uiColor = "#99d1db";
+ showDesktopNotification = false;
+ disabledTrayIcon = true;
+ };
+ };
+ };
+
+ services.darkman = let
+ wallpaperPath = "${config.home.homeDirectory}/.local/state/wallpaper.jpg";
+ in {
+ enable = false;
+ settings = {
+ lat = 52.52;
+ lng = 13.405;
+ };
+ darkModeScripts = {
+ kitty-theme = ''
+ ${pkgs.kitty}/bin/kitty +kitten themes --reload-in=all --config-file-name ${config.home.homeDirectory}/.config/kitty/current-colors.conf Catppuccin-Frappe
+ '';
+ };
+ lightModeScripts = {
+ kitty-theme = ''
+ ${pkgs.kitty}/bin/kitty +kitten themes --reload-in=all --config-file-name ${config.home.homeDirectory}/.config/kitty/current-colors.conf Catppuccin-Latte
+ '';
+ };
+ };
+ programs.ags = {
+ enable = true;
+ configDir = ./ags;
+ };
+ xdg.configFile.ags.onChange = ''
+ ${pkgs.procps}/bin/pkill -u $USER -USR2 ags || true
+ '';
+ systemd.user.services.ags = {
+ Unit = {
+ Description = "ags";
+ PartOf = [ "graphical-session.target" "tray.target" ];
+ };
+ Service = {
+ ExecStart = "${pkgs.ags}/bin/ags";
+ ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID";
+ Restart = "always";
+ KillMode = "mixed";
+ Environment = "PATH=/run/current-system/sw/bin/:${
+ with pkgs;
+ lib.makeBinPath [
+ swww
+ sassc
+ glib
+ brightnessctl
+ ydotool
+ kitty
+ hyprpicker
+ ]
+ }";
+ };
+ Install = { WantedBy = [ "graphical-session.target" ]; };
+ };
+ programs.kitty = import ./kitty.nix { inherit pkgs; };
+ programs.anyrun = import ./anyrun.nix { inherit pkgs; };
+ services.udiskie.enable = true;
+ services.udiskie.tray = "never";
+
+ fonts.fontconfig.enable = true;
+ home.packages = with pkgs; [
+ # fonts
+ noto-fonts
+ # essentials
+ hyprpicker
+ grim
+ slurp
+ wl-clipboard
+ polkit_gnome
+ xdg-desktop-portal-gtk
+ # qt/kde packages
+ qt6.qtwayland
+ qt5.qtwayland
+ kdePackages.breeze-icons
+ # gnome packages
+ evince
+ gnome.gvfs
+ gnome.gnome-keyring
+ gnome.nautilus
+ gnome.gnome-calendar
+ gnome.gnome-characters
+ gnome.gnome-contacts
+ gnome.gnome-clocks
+ gnome.gnome-calculator
+ gnome.simple-scan
+ gnome.eog
+ gnome.geary
+ gnome.ghex
+ gnome.gnome-weather
+ gnome.gnome-keyring
+ gnome.gnome-disk-utility
+ # fixes
+ xorg.xrandr
+ ];
+
+ dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
+ gtk = {
+ enable = true;
+ theme = {
+ name = "adw-gtk3-dark";
+ package = pkgs.adw-gtk3;
+ };
+ #gtk3.extraCss = builtins.readFile ./gtk.css;
+ #gtk4.extraCss = builtins.readFile ./gtk.css;
+ iconTheme = {
+ name = "Tela";
+ package = pkgs.tela-icon-theme;
+ };
+ };
+ qt = {
+ enable = true;
+ platformTheme = "qtct";
+ };
+
+ programs.fish.loginShellInit =
+ # fish
+ ''
+ Hyprland && echo "goodbye" && exit 0 \
+ || echo "$status couldn't launch Hyprland" && tty | grep tty1 \
+ && echo "refusing to autologin without Hyprland on tty1" && exit 0 \
+ || echo "not on tty1, letting in"
+ '';
+
+ home = {
+ pointerCursor = {
+ gtk.enable = true;
+ package = pkgs.capitaine-cursors;
+ name = "capitaine-cursors";
+ };
+
+ file.".config/hypr/shaders" = {
+ source = ./hypr/shaders;
+ recursive = true;
+ };
+ };
+ };
+}
diff --git a/home/desktops/hyprland/fonts/Torus-Bold.c233ce17.otf b/modules/home-manager/desktops/hyprland/fonts/Torus-Bold.c233ce17.otf
similarity index 100%
rename from home/desktops/hyprland/fonts/Torus-Bold.c233ce17.otf
rename to modules/home-manager/desktops/hyprland/fonts/Torus-Bold.c233ce17.otf
diff --git a/home/desktops/hyprland/fonts/Torus-Regular.734ed3ae.otf b/modules/home-manager/desktops/hyprland/fonts/Torus-Regular.734ed3ae.otf
similarity index 100%
rename from home/desktops/hyprland/fonts/Torus-Regular.734ed3ae.otf
rename to modules/home-manager/desktops/hyprland/fonts/Torus-Regular.734ed3ae.otf
diff --git a/home/desktops/hyprland/fonts/Torus-SemiBold.d263d500.otf b/modules/home-manager/desktops/hyprland/fonts/Torus-SemiBold.d263d500.otf
similarity index 100%
rename from home/desktops/hyprland/fonts/Torus-SemiBold.d263d500.otf
rename to modules/home-manager/desktops/hyprland/fonts/Torus-SemiBold.d263d500.otf
diff --git a/home/desktops/hyprland/gtk.css b/modules/home-manager/desktops/hyprland/gtk.css
similarity index 100%
rename from home/desktops/hyprland/gtk.css
rename to modules/home-manager/desktops/hyprland/gtk.css
diff --git a/home/desktops/hyprland/hypr/shaders/bluefilter.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/bluefilter.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/bluefilter.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/bluefilter.frag
diff --git a/home/desktops/hyprland/hypr/shaders/blur.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/blur.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/blur.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/blur.frag
diff --git a/home/desktops/hyprland/hypr/shaders/chromatic_abberation.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/chromatic_abberation.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/chromatic_abberation.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/chromatic_abberation.frag
diff --git a/home/desktops/hyprland/hypr/shaders/crt.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/crt.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/crt.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/crt.frag
diff --git a/home/desktops/hyprland/hypr/shaders/drugs.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/drugs.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/drugs.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/drugs.frag
diff --git a/home/desktops/hyprland/hypr/shaders/extradark.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/extradark.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/extradark.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/extradark.frag
diff --git a/home/desktops/hyprland/hypr/shaders/gaussian.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/gaussian.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/gaussian.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/gaussian.frag
diff --git a/home/desktops/hyprland/hypr/shaders/motion-blur.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/motion-blur.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/motion-blur.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/motion-blur.frag
diff --git a/home/desktops/hyprland/hypr/shaders/nothing.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/nothing.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/nothing.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/nothing.frag
diff --git a/home/desktops/hyprland/hypr/shaders/solarized.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/solarized.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/solarized.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/solarized.frag
diff --git a/home/desktops/hyprland/hypr/shaders/vibrance.frag b/modules/home-manager/desktops/hyprland/hypr/shaders/vibrance.frag
similarity index 100%
rename from home/desktops/hyprland/hypr/shaders/vibrance.frag
rename to modules/home-manager/desktops/hyprland/hypr/shaders/vibrance.frag
diff --git a/home/desktops/hyprland/keybinds.nix b/modules/home-manager/desktops/hyprland/keybinds.nix
similarity index 100%
rename from home/desktops/hyprland/keybinds.nix
rename to modules/home-manager/desktops/hyprland/keybinds.nix
diff --git a/home/desktops/hyprland/kitty.nix b/modules/home-manager/desktops/hyprland/kitty.nix
similarity index 100%
rename from home/desktops/hyprland/kitty.nix
rename to modules/home-manager/desktops/hyprland/kitty.nix
diff --git a/home/desktops/hyprland/mousebinds.nix b/modules/home-manager/desktops/hyprland/mousebinds.nix
similarity index 100%
rename from home/desktops/hyprland/mousebinds.nix
rename to modules/home-manager/desktops/hyprland/mousebinds.nix
diff --git a/home/packages/default.nix b/modules/home-manager/packages/default.nix
similarity index 100%
rename from home/packages/default.nix
rename to modules/home-manager/packages/default.nix
diff --git a/home/packages/hid-fanatecff-tools.nix b/modules/home-manager/packages/hid-fanatecff-tools.nix
similarity index 100%
rename from home/packages/hid-fanatecff-tools.nix
rename to modules/home-manager/packages/hid-fanatecff-tools.nix
diff --git a/home/packages/ranger.conf b/modules/home-manager/packages/ranger.conf
similarity index 100%
rename from home/packages/ranger.conf
rename to modules/home-manager/packages/ranger.conf
diff --git a/home/packages/threema-desktop.nix b/modules/home-manager/packages/threema-desktop.nix
similarity index 100%
rename from home/packages/threema-desktop.nix
rename to modules/home-manager/packages/threema-desktop.nix
diff --git a/home/programs/default.nix b/modules/home-manager/programs/default.nix
similarity index 100%
rename from home/programs/default.nix
rename to modules/home-manager/programs/default.nix
diff --git a/home/programs/firefox.nix b/modules/home-manager/programs/firefox.nix
similarity index 100%
rename from home/programs/firefox.nix
rename to modules/home-manager/programs/firefox.nix
diff --git a/home/programs/git.nix b/modules/home-manager/programs/git.nix
similarity index 100%
rename from home/programs/git.nix
rename to modules/home-manager/programs/git.nix
diff --git a/home/programs/neovide.nix b/modules/home-manager/programs/neovide.nix
similarity index 100%
rename from home/programs/neovide.nix
rename to modules/home-manager/programs/neovide.nix
diff --git a/home/programs/neovide.toml b/modules/home-manager/programs/neovide.toml
similarity index 100%
rename from home/programs/neovide.toml
rename to modules/home-manager/programs/neovide.toml
diff --git a/home/programs/nixvim/custom-highlights.lua b/modules/home-manager/programs/nixvim/custom-highlights.lua
similarity index 100%
rename from home/programs/nixvim/custom-highlights.lua
rename to modules/home-manager/programs/nixvim/custom-highlights.lua
diff --git a/home/programs/nixvim/default.nix b/modules/home-manager/programs/nixvim/default.nix
similarity index 100%
rename from home/programs/nixvim/default.nix
rename to modules/home-manager/programs/nixvim/default.nix
diff --git a/home/programs/nixvim/extra-config.lua b/modules/home-manager/programs/nixvim/extra-config.lua
similarity index 100%
rename from home/programs/nixvim/extra-config.lua
rename to modules/home-manager/programs/nixvim/extra-config.lua
diff --git a/home/programs/nixvim/keymaps.nix b/modules/home-manager/programs/nixvim/keymaps.nix
similarity index 100%
rename from home/programs/nixvim/keymaps.nix
rename to modules/home-manager/programs/nixvim/keymaps.nix
diff --git a/home/services/default.nix b/modules/home-manager/services/default.nix
similarity index 100%
rename from home/services/default.nix
rename to modules/home-manager/services/default.nix
diff --git a/modules/nixos/README.md b/modules/nixos/README.md
new file mode 100644
index 0000000..ffdfbe0
--- /dev/null
+++ b/modules/nixos/README.md
@@ -0,0 +1,9 @@
+# NixOS Modules
+
+This is a collection of modules, built like the NixOS repo that extends it with
+either generic features that might be shared between systems or simplifications
+of things that might otherwise lead to duplicate code.
+
+All of these should be more or less ready to copy yourself.
+
+Any modules that are just presets are used with `original.option.preset.name.enable = true;`
diff --git a/modules/nixos/boot/quiet.nix b/modules/nixos/boot/quiet.nix
new file mode 100644
index 0000000..cd4648e
--- /dev/null
+++ b/modules/nixos/boot/quiet.nix
@@ -0,0 +1,36 @@
+{ config, lib, ... }:
+
+with lib;
+
+let cfg = config.boot.quiet;
+
+in {
+ options.boot.quiet = { enable = mkEnableOption (mdDoc "Clean, quiet boot"); };
+
+ config = mkIf cfg.enable {
+ boot = {
+ loader = {
+ timeout = 0;
+ systemd-boot.consoleMode = "max";
+ };
+
+ kernelParams = [
+ # Redirect all kernel messages to a console off screen
+ #"fbcon=vc:2-6"
+ #"console=tty1"
+
+ "video=3840x2160@144"
+ "splash"
+ "quiet"
+
+ #"rd.udev.log_level=3"
+ #"rd.systemd.show_status=false"
+ #"udev.log_priority=3"
+ #"boot.shell_on_fail"
+ #"vt.global_cursor_default=0" # no cursor blinking
+ ];
+ consoleLogLevel = 0;
+ initrd.verbose = false;
+ };
+ };
+}
diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix
new file mode 100644
index 0000000..77e0988
--- /dev/null
+++ b/modules/nixos/default.nix
@@ -0,0 +1,22 @@
+{ ... }: {
+ imports = [
+ ./boot/quiet.nix
+
+ ./desktops/hyprland.nix
+
+ ./fonts/fira-code.nix
+ ./fonts/noto-sans.nix
+ ./fonts/nerdfonts.nix
+
+ ./hardware/audio.nix
+ ./hardware/gbmonctl.nix
+ ./hardware/nvidia.nix
+ ./hardware/cc1.nix
+ ./hardware/fv43u.nix
+ ./hardware/virtual-camera.nix
+
+ ./locales/theaninova.nix
+
+ ./services/airprint.nix
+ ];
+}
diff --git a/modules/nixos/desktops/hyprland.nix b/modules/nixos/desktops/hyprland.nix
new file mode 100644
index 0000000..6ca6db3
--- /dev/null
+++ b/modules/nixos/desktops/hyprland.nix
@@ -0,0 +1,38 @@
+{ config, lib, pkgs, username, ... }:
+
+with lib;
+
+let cfg = config.desktops.hyprland;
+
+in {
+ options.desktops.hyprland = {
+ enable = mkEnableOption (mdDoc "Enable a DE based on Hyprland");
+ };
+
+ config = mkIf cfg.enable {
+ services.getty.autologinUser = "${username}";
+ services.getty.extraArgs = [ "--noclear" "--noissue" "--nonewline" ];
+ services.getty.loginOptions = "-p -f -- \\u"; # preserve environment
+
+ services.dbus.enable = true;
+ xdg.portal = {
+ enable = true;
+ extraPortals =
+ [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-kde ];
+ };
+
+ services.pcscd.enable = true;
+
+ # nautilus on non-gnome
+ services.gvfs.enable = true;
+ # fix pinentry on non-gnome
+ services.dbus.packages = with pkgs; [ gcr ];
+ services.gnome.gnome-online-accounts.enable = true;
+ services.gnome.evolution-data-server.enable = true;
+
+ programs.hyprland.enable = true;
+ programs.kdeconnect.enable = true;
+
+ environment.sessionVariables.NIXOS_OZONE_WL = "1";
+ };
+}
diff --git a/modules/nixos/fonts/fira-code.nix b/modules/nixos/fonts/fira-code.nix
new file mode 100644
index 0000000..71686c5
--- /dev/null
+++ b/modules/nixos/fonts/fira-code.nix
@@ -0,0 +1,50 @@
+{ pkgs, lib, config, ... }:
+with lib;
+
+let cfg = config.fonts.fira-code;
+
+in {
+ options.fonts.fira-code = {
+ enable = mkEnableOption "Enable the preset for Fira Code";
+ stylisticSets = mkOption {
+ type = types.listOf types.string;
+ description = mdDoc
+ "[Stylistic sets](https://github.com/tonsky/FiraCode/wiki/How-to-enable-stylistic-sets) for Fira Code";
+ default =
+ [ "zero" "onum" "ss04" "cv19" "cv23" "ss09" "ss06" "ss07" "ss10" ];
+ };
+ default = mkOption {
+ type = types.bool;
+ description = "Make Fira Code the default monospace font";
+ default = false;
+ };
+ };
+
+ config = mkIf cfg.enable {
+ fonts = {
+ packages = with pkgs; [ fira-code ];
+ nerdfonts.additionalFonts = [ "FiraCode" ];
+ fontconfig = {
+ defaultFonts.monospace = mkIf cfg.default [
+ (if (config.fonts.nerdfonts.enable) then
+ "Fira Code Nerd Font"
+ else
+ "FiraCode")
+ ];
+ localConf = ''
+
+
+ Fira
+
+
+ ${
+ lib.concatStringsSep " "
+ (map (set: "${set}") cfg.stylisticSets)
+ }
+
+
+ '';
+ };
+ };
+ };
+}
diff --git a/modules/nixos/fonts/nerdfonts.nix b/modules/nixos/fonts/nerdfonts.nix
new file mode 100644
index 0000000..9823cec
--- /dev/null
+++ b/modules/nixos/fonts/nerdfonts.nix
@@ -0,0 +1,26 @@
+{ pkgs, lib, config, ... }:
+with lib;
+
+let cfg = config.fonts.nerdfonts;
+
+in {
+ options.fonts.nerdfonts = {
+ enable = mkEnableOption "Enable nerdfonts";
+ additionalFonts = mkOption {
+ type = types.listOf types.str;
+ default = [ ];
+ description = "Additional fonts to include in the nerdfonts package";
+ };
+ };
+
+ config = mkIf cfg.enable {
+ fonts = {
+ packages = with pkgs;
+ [
+ (nerdfonts.override {
+ fonts = [ "NerdFontsSymbolsOnly" ] ++ cfg.additionalFonts;
+ })
+ ];
+ };
+ };
+}
diff --git a/modules/nixos/fonts/noto-sans.nix b/modules/nixos/fonts/noto-sans.nix
new file mode 100644
index 0000000..0f54cbf
--- /dev/null
+++ b/modules/nixos/fonts/noto-sans.nix
@@ -0,0 +1,30 @@
+{ pkgs, lib, config, ... }:
+with lib;
+
+let cfg = config.fonts.noto-sans;
+
+in {
+ options.fonts.noto-sans = {
+ enable = mkEnableOption "Enable the Noto Sans font";
+ default = mkOption {
+ type = types.bool;
+ description = "Make Noto Sans the default sans-serif font";
+ default = false;
+ };
+ };
+
+ config = mkIf cfg.enable {
+ fonts = {
+ packages = with pkgs; [ noto-fonts noto-fonts-cjk noto-fonts-emoji ];
+ nerdfonts.additionalFonts = [ "Noto" ];
+ fontconfig = {
+ defaultFonts.sansSerif = mkIf cfg.default [
+ (if (config.fonts.nerdfonts.enable) then
+ "Noto Sans Nerd Font"
+ else
+ "Noto Sans")
+ ];
+ };
+ };
+ };
+}
diff --git a/modules/nixos/hardware/audio.nix b/modules/nixos/hardware/audio.nix
new file mode 100644
index 0000000..7b4611a
--- /dev/null
+++ b/modules/nixos/hardware/audio.nix
@@ -0,0 +1,22 @@
+{ pkgs, lib, config, ... }:
+with lib;
+
+let cfg = config.hardware.audio.preset.pipewire;
+
+in {
+ options.hardware.audio.preset.pipewire = {
+ enable = mkEnableOption "Enable pipewire with sane defaults";
+ };
+
+ config = mkIf cfg.enable {
+ hardware.pulseaudio.enable = false;
+ security.rtkit.enable = true;
+ services.pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ jack.enable = true;
+ };
+ };
+}
diff --git a/modules/cc1-thea b/modules/nixos/hardware/cc1-thea
similarity index 100%
rename from modules/cc1-thea
rename to modules/nixos/hardware/cc1-thea
diff --git a/modules/nixos/hardware/cc1.nix b/modules/nixos/hardware/cc1.nix
new file mode 100644
index 0000000..4ffed67
--- /dev/null
+++ b/modules/nixos/hardware/cc1.nix
@@ -0,0 +1,29 @@
+{ pkgs, lib, config, username, ... }:
+with lib;
+
+let cfg = config.hardware.cc1;
+
+in {
+ options.hardware.cc1 = {
+ enable = mkEnableOption "Enable CC1 optimizations";
+ layout = mkOption {
+ type = with lib.types; enum [ "cc1-thea" ];
+ default = "cc1-thea";
+ };
+ };
+
+ config = mkIf cfg.enable {
+ # TODO: per-device layout?
+ console.useXkbConfig = true;
+ services.xserver.xkb = {
+ layout = cfg.layout;
+ extraLayouts.cc1-thea = {
+ description = "A CC1 optimized layout";
+ languages = [ "eng" "ger" ];
+ symbolsFile = ./${cfg.layout};
+ };
+ };
+
+ users.users.${username}.extraGroups = [ "dialout" ];
+ };
+}
diff --git a/modules/nixos/hardware/fv43u.nix b/modules/nixos/hardware/fv43u.nix
new file mode 100644
index 0000000..3dda095
--- /dev/null
+++ b/modules/nixos/hardware/fv43u.nix
@@ -0,0 +1,17 @@
+{ pkgs, lib, config, username, ... }:
+with lib;
+
+let cfg = config.hardware.fv43u;
+
+in {
+ options.hardware.fv43u = {
+ enable =
+ mkEnableOption "Enable optimisations for the Gigabyte FV43U monitor";
+ };
+
+ config = mkIf cfg.enable {
+ fonts.fontconfig.subpixel.rgba = "bgr";
+ hardware.gbmonctl.enable = true;
+ boot.kernelParams = [ "video=3840x2160@144" ];
+ };
+}
diff --git a/modules/nixos/gbmonctl/default.nix b/modules/nixos/hardware/gbmonctl.nix
similarity index 87%
rename from modules/nixos/gbmonctl/default.nix
rename to modules/nixos/hardware/gbmonctl.nix
index eab890e..0b9fc12 100644
--- a/modules/nixos/gbmonctl/default.nix
+++ b/modules/nixos/hardware/gbmonctl.nix
@@ -1,18 +1,22 @@
{ pkgs, lib, config, ... }:
+with lib;
+
let cfg = config.hardware.gbmonctl;
-in with lib; {
+
+in {
options.hardware.gbmonctl = {
enable = mkOption {
type = types.bool;
default = false;
- description = lib.mkDoc ''
+ description = mkDoc ''
Enables a CLI tool to change monitor settings over USB to the Gigabyte M32U
In theory any Gigabyte Monitor that uses a Realtek HID device (presumably the M28U also uses this) to control it over OSD sidekick should have the same protocol, but this is the only one I own.
'';
};
};
- config = lib.mkIf cfg.enable {
+
+ config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.gbmonctl ];
services.udev.packages = [ pkgs.gbmonctl ];
};
diff --git a/modules/nixos/hardware/nvidia.nix b/modules/nixos/hardware/nvidia.nix
new file mode 100644
index 0000000..91b0080
--- /dev/null
+++ b/modules/nixos/hardware/nvidia.nix
@@ -0,0 +1,51 @@
+{ pkgs, lib, config, ... }:
+with lib;
+
+let cfg = config.hardware.nvidia.preset.proprietary;
+
+in {
+ options.hardware.nvidia.preset.proprietary = {
+ enable = mkEnableOption
+ "Enable proprietary NVIDIA driver support with some sane defaults";
+ };
+
+ config = mkIf cfg.enable {
+ hardware.opengl = {
+ enable = true;
+ driSupport = true;
+ driSupport32Bit = true;
+ extraPackages = with pkgs; [ libvdpau-va-gl nvidia-vaapi-driver ];
+ };
+
+ services.xserver.videoDrivers = [ "nvidia" ];
+
+ boot.kernelParams = [ "nvidia_drm.fbdev=1" ];
+ boot.kernelModules =
+ [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ];
+ boot.initrd.kernelModules =
+ [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ];
+
+ hardware.nvidia = {
+ modesetting.enable = true;
+ # seems to cause crashes on sleep
+ powerManagement.enable = false;
+ open = true;
+ nvidiaSettings = false;
+ # no idea if this actually does anything...
+ nvidiaPersistenced = false;
+ };
+
+ environment = {
+ variables = {
+ VDPAU_DRIVER = "va_gl";
+ LIBVA_DRIVER_NAME = "nvidia";
+ };
+ systemPackages = with pkgs; [
+ glxinfo
+ nvtopPackages.nvidia
+ libva-utils
+ vulkan-tools
+ ];
+ };
+ };
+}
diff --git a/modules/nixos/hardware/virtual-camera.nix b/modules/nixos/hardware/virtual-camera.nix
new file mode 100644
index 0000000..88561a1
--- /dev/null
+++ b/modules/nixos/hardware/virtual-camera.nix
@@ -0,0 +1,22 @@
+{ pkgs, lib, config, ... }:
+with lib;
+
+let cfg = config.hardware.virtual-camera;
+
+in {
+ options.hardware.virtual-camera = {
+ enable = mkEnableOption "Enable the virtual camera";
+ };
+
+ config = mkIf cfg.enable {
+ boot = {
+ # Virtual Camera/Mic
+ kernelModules = [ "v4l2loopback" "snd-aloop" "sg" ];
+ extraModulePackages = with config.boot.kernelPackages;
+ [ v4l2loopback.out ];
+ extraModprobeConfig = ''
+ options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"
+ '';
+ };
+ };
+}
diff --git a/modules/nixos/locales/theaninova.nix b/modules/nixos/locales/theaninova.nix
new file mode 100644
index 0000000..83b689a
--- /dev/null
+++ b/modules/nixos/locales/theaninova.nix
@@ -0,0 +1,32 @@
+{ pkgs, lib, config, ... }:
+with lib;
+
+let cfg = config.locale.preset.theaninova;
+
+in {
+ options.locale.preset.theaninova = {
+ enable = mkEnableOption "Enable the locale preset for Theaninova";
+ };
+
+ config = mkIf cfg.enable {
+ time.timeZone = "Europe/Berlin";
+ i18n = {
+ inputMethod = {
+ enabled = "ibus";
+ ibus.engines = [ pkgs.ibus-engines.anthy ];
+ };
+ defaultLocale = "en_GB.UTF-8";
+ extraLocaleSettings = {
+ LC_ADDRESS = "de_DE.UTF-8";
+ LC_IDENTIFICATION = "de_DE.UTF-8";
+ LC_MEASUREMENT = "de_DE.UTF-8";
+ LC_MONETARY = "de_DE.UTF-8";
+ LC_NAME = "de_DE.UTF-8";
+ LC_NUMERIC = "de_DE.UTF-8";
+ LC_PAPER = "de_DE.UTF-8";
+ LC_TELEPHONE = "de_DE.UTF-8";
+ LC_TIME = "de_DE.UTF-8";
+ };
+ };
+ };
+}
diff --git a/modules/nixos/services/airprint.nix b/modules/nixos/services/airprint.nix
new file mode 100644
index 0000000..7f9e827
--- /dev/null
+++ b/modules/nixos/services/airprint.nix
@@ -0,0 +1,23 @@
+{ pkgs, lib, config, ... }:
+with lib;
+
+let cfg = config.services.airprint;
+
+in {
+ options.services.airprint = {
+ enable = mkEnableOption "Enable printing over the air using sane and avahi";
+ };
+
+ config = mkIf cfg.enable {
+ hardware.sane = {
+ enable = true;
+ extraBackends = [ pkgs.sane-airscan ];
+ };
+ services.printing.enable = true;
+ services.avahi = {
+ enable = true;
+ nssmdns4 = true;
+ openFirewall = true;
+ };
+ };
+}
diff --git a/overlays/darkman/default.nix b/overlays/darkman/default.nix
new file mode 100644
index 0000000..fa5cb26
--- /dev/null
+++ b/overlays/darkman/default.nix
@@ -0,0 +1,47 @@
+{ lib, scdoc, buildGoModule, fetchFromGitLab, hidapi, udev, }:
+buildGoModule rec {
+ pname = "darkman";
+ version = "1.5.4";
+
+ src = fetchFromGitLab {
+ owner = "WhyNotHugo";
+ repo = "darkman";
+ rev = "5332193777fb0c5dbde6cbfd015a16697d6a0c8e";
+ hash = "sha256-3TGDy7hiI+z0IrA+d/Q+rMFlew6gipdpXyJ5eVLCmds=";
+ };
+
+ vendorHash = "sha256-xEPmNnaDwFU4l2G4cMvtNeQ9KneF5g9ViQSFrDkrafY=";
+
+ nativeBuildInputs = [ scdoc ];
+
+ postPatch = ''
+ substituteInPlace darkman.service \
+ --replace "/usr/bin/darkman" "$out/bin/darkman"
+ substituteInPlace contrib/dbus/nl.whynothugo.darkman.service \
+ --replace "/usr/bin/darkman" "$out/bin/darkman"
+ substituteInPlace contrib/dbus/org.freedesktop.impl.portal.desktop.darkman.service \
+ --replace "/usr/bin/darkman" "$out/bin/darkman"
+ '';
+
+ buildPhase = ''
+ runHook preBuild
+ make build
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+ make PREFIX=$out install
+ runHook postInstall
+ '';
+
+ meta = with lib; {
+ description =
+ "Framework for dark-mode and light-mode transitions on Linux desktop";
+ homepage = "https://gitlab.com/WhyNotHugo/darkman";
+ license = licenses.isc;
+ maintainers = [ maintainers.ajgrf ];
+ platforms = platforms.linux;
+ mainProgram = "darkman";
+ };
+}