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"; + }; +}