diff options
| author | Petri Hienonen <petri.hienonen@gmail.com> | 2025-10-18 14:24:04 +0300 |
|---|---|---|
| committer | Petri Hienonen <petri.hienonen@gmail.com> | 2025-10-18 14:24:04 +0300 |
| commit | 0396d313791af347f31d004bbf2842fb11244fac (patch) | |
| tree | 2cae5a5b55e610b7e3d19667032fefeb8018f4de /flake.nix | |
| download | wallpaper-0396d313791af347f31d004bbf2842fb11244fac.tar.zst | |
Update
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..9f01226 --- /dev/null +++ b/flake.nix @@ -0,0 +1,91 @@ +{ + description = "Hyprland Live Wallpaper"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = + { + self, + nixpkgs, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + { + packages.default = pkgs.rustPlatform.buildRustPackage { + pname = "hyprland-live-wallpaper"; + version = "0.1.0"; + src = ./.; + cargoLock.lockFile = ./Cargo.lock; + nativeBuildInputs = with pkgs; [ pkg-config ]; + buildInputs = with pkgs; [ + wayland + libxkbcommon + vulkan-loader + wayland-protocols + ]; + }; + + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + rustc + clippy + rustfmt + cargo + pkg-config + wayland + libxkbcommon + vulkan-loader + wayland-protocols + ]; + }; + } + ) + // { + nixosModules.default = + { + config, + lib, + pkgs, + ... + }: + with lib; + let + cfg = config.services.hyprland-live-wallpaper; + in + { + options.services.hyprland-live-wallpaper = { + enable = mkEnableOption "Hyprland Live Wallpaper service"; + shader = mkOption { + type = types.str; + default = "default.wgsl"; + description = "Shader file to use"; + }; + }; + + config = mkIf cfg.enable { + systemd.user.services.hyprland-live-wallpaper = { + description = "Hyprland Live Wallpaper"; + wantedBy = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${ + self.packages.${pkgs.system}.default + }/bin/hyprland-live-wallpaper --shader ${cfg.shader}"; + Restart = "on-failure"; + Environment = [ + "RUST_LOG=info" + ]; + }; + }; + }; + }; + }; +} |
