From c84146f7615704ac89556f264af2b049e547ea98 Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Wed, 19 Jun 2024 10:53:36 +0200 Subject: [PATCH] Put functionalities into modules --- homes/x86_64-linux/julian@aspi/default.nix | 8 +---- modules/home/desktop/default.nix | 1 + modules/home/gammastep/default.nix | 41 +++++++++++++++++++++ modules/nixos/hyprland/default.nix | 37 +++++++++++++++++++ modules/nixos/thunar/default.nix | 42 ++++++++++++++++++++++ modules/nixos/wayland/default.nix | 39 ++++++++++++++++++++ systems/x86_64-linux/aspi/default.nix | 37 +++---------------- 7 files changed, 165 insertions(+), 40 deletions(-) create mode 100644 modules/home/gammastep/default.nix create mode 100644 modules/nixos/hyprland/default.nix create mode 100644 modules/nixos/thunar/default.nix create mode 100644 modules/nixos/wayland/default.nix diff --git a/homes/x86_64-linux/julian@aspi/default.nix b/homes/x86_64-linux/julian@aspi/default.nix index 3672096..4a8d6f2 100644 --- a/homes/x86_64-linux/julian@aspi/default.nix +++ b/homes/x86_64-linux/julian@aspi/default.nix @@ -41,6 +41,7 @@ nix-helper.enable = true; desktop.enable = true; + gammastep.enable = true; }; home.packages = @@ -100,13 +101,6 @@ services.syncthing.enable = true; - services.gammastep = { - enable = true; - latitude = 47.92; - longitude = 10.12; - provider = "manual"; - }; - # Let Home Manager install and manage itself. programs.home-manager.enable = true; diff --git a/modules/home/desktop/default.nix b/modules/home/desktop/default.nix index 85ab90c..a6a7f34 100644 --- a/modules/home/desktop/default.nix +++ b/modules/home/desktop/default.nix @@ -26,6 +26,7 @@ in ]; config = lib.mkIf cfg.enable { + # systemd.user.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark"; prism = { enable = true; wallpapers = ./wallpapers; diff --git a/modules/home/gammastep/default.nix b/modules/home/gammastep/default.nix new file mode 100644 index 0000000..8c1759d --- /dev/null +++ b/modules/home/gammastep/default.nix @@ -0,0 +1,41 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs, + # You also have access to your flake's inputs. + inputs, + + # Additional metadata is provided by Snowfall Lib. + system, # The system architecture for this host (eg. `x86_64-linux`). + target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). + format, # A normalized name for the system target (eg. `iso`). + virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. + systems, # An attribute map of your defined hosts. + + # All other arguments come from the module system. + config, + host, + ... +}: + +with lib; + +let + cfg = config.modules.gammastep; +in +{ + options.modules.gammastep = { + enable = mkOption { default = false; }; + }; + + config = mkIf cfg.enable { + services.gammastep = { + enable = true; + latitude = 47.92; + longitude = 10.12; + provider = "manual"; + }; + }; +} diff --git a/modules/nixos/hyprland/default.nix b/modules/nixos/hyprland/default.nix new file mode 100644 index 0000000..3d80eae --- /dev/null +++ b/modules/nixos/hyprland/default.nix @@ -0,0 +1,37 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs, + # You also have access to your flake's inputs. + inputs, + + # Additional metadata is provided by Snowfall Lib. + namespace, # The namespace used for your flake, defaulting to "internal" if not set. + system, # The system architecture for this host (eg. `x86_64-linux`). + target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). + format, # A normalized name for the system target (eg. `iso`). + virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. + systems, # An attribute map of your defined hosts. + + # All other arguments come from the module system. + config, + ... +}: + +let + cfg = config.modules.hyprland; +in +{ + options.modules.hyprland = { + enable = lib.mkOption { default = false; }; + }; + + config = lib.mkIf cfg.enable { + programs.hyprland.enable = true; + programs.hyprland.package = inputs.hyprland.packages.${pkgs.system}.hyprland; + programs.hyprland.xwayland.enable = true; + security.pam.services.hyprlock = { }; + }; +} diff --git a/modules/nixos/thunar/default.nix b/modules/nixos/thunar/default.nix new file mode 100644 index 0000000..6c3a2c2 --- /dev/null +++ b/modules/nixos/thunar/default.nix @@ -0,0 +1,42 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs, + # You also have access to your flake's inputs. + inputs, + + # Additional metadata is provided by Snowfall Lib. + namespace, # The namespace used for your flake, defaulting to "internal" if not set. + system, # The system architecture for this host (eg. `x86_64-linux`). + target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). + format, # A normalized name for the system target (eg. `iso`). + virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. + systems, # An attribute map of your defined hosts. + + # All other arguments come from the module system. + config, + ... +}: + +let + cfg = config.modules.thunar; +in +{ + options.modules.thunar = { + enable = lib.mkOption { default = false; }; + }; + + config = lib.mkIf cfg.enable { + programs.thunar.enable = true; + programs.xfconf.enable = true; # Persist saved preferences + programs.thunar.plugins = with pkgs.xfce; [ + thunar-archive-plugin + thunar-volman + thunar-media-tags-plugin + ]; + services.gvfs.enable = true; # Mount, trash, and other functionalities + services.tumbler.enable = true; # Thumbnail support for images + }; +} diff --git a/modules/nixos/wayland/default.nix b/modules/nixos/wayland/default.nix new file mode 100644 index 0000000..b661617 --- /dev/null +++ b/modules/nixos/wayland/default.nix @@ -0,0 +1,39 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs, + # You also have access to your flake's inputs. + inputs, + + # Additional metadata is provided by Snowfall Lib. + namespace, # The namespace used for your flake, defaulting to "internal" if not set. + system, # The system architecture for this host (eg. `x86_64-linux`). + target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). + format, # A normalized name for the system target (eg. `iso`). + virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. + systems, # An attribute map of your defined hosts. + + # All other arguments come from the module system. + config, + ... +}: + +let + cfg = config.modules.wayland; +in +{ + options.modules.wayland = { + enable = lib.mkOption { default = false; }; + }; + + config = lib.mkIf cfg.enable { + environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Hint electron apps to use wayland + + environment.systemPackages = with pkgs; [ + kdePackages.qtwayland + wl-clipboard + ]; + }; +} diff --git a/systems/x86_64-linux/aspi/default.nix b/systems/x86_64-linux/aspi/default.nix index e5d9e9d..ebfed27 100644 --- a/systems/x86_64-linux/aspi/default.nix +++ b/systems/x86_64-linux/aspi/default.nix @@ -66,14 +66,11 @@ # Set your time zone. time.timeZone = "Europe/Berlin"; - # Set location used by redshift - location.provider = "manual"; - location.latitude = 47.92; - location.longitude = 10.12; - modules = { locales.enable = true; - # greetd.enable = true; + thunar.enable = true; + wayland.enable = true; + hyprland.enable = true; }; nix.settings.auto-optimise-store = true; @@ -121,9 +118,7 @@ # services.xserver.windowManager.i3.enable = true; # services.xserver.windowManager.i3.package = pkgs.i3-gaps; - programs.hyprland.enable = true; - programs.hyprland.package = inputs.hyprland.packages.${pkgs.system}.hyprland; - programs.hyprland.xwayland.enable = true; + programs.kdeconnect.enable = true; # Configure keymap in X11 services.xserver = { @@ -159,8 +154,6 @@ }; }; - security.pam.services.hyprlock = { }; - # Sound security.rtkit.enable = true; services.pipewire = { @@ -246,18 +239,8 @@ # }; # }; - # x11 only, for wayland use gammastep (home-manager) - # services.redshift.enable = true; - services.flatpak.enable = true; - environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Hint electron apps to use wayland - - # TODO: connect with desktop home manager module - environment.variables = { - GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark"; - }; - xdg.portal.enable = true; xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; # hyprland desktop portal added automatically @@ -275,24 +258,12 @@ htop mc xorg.xhost - kdePackages.qtwayland pavucontrol frajul.pulseaudio-popup gparted-xhost # needs to be installed as system package so it can be actually opened - wl-clipboard xclip ]; - programs.thunar.enable = true; - programs.xfconf.enable = true; # Persist saved preferences - programs.thunar.plugins = with pkgs.xfce; [ - thunar-archive-plugin - thunar-volman - thunar-media-tags-plugin - ]; - services.gvfs.enable = true; # Mount, trash, and other functionalities - services.tumbler.enable = true; # Thumbnail support for images - virtualisation.docker.enable = true; virtualisation.virtualbox.host.enable = true;