{ lib, pkgs, ... }:

let
  inherit (builtins) baseNameOf;
  inherit (lib.strings) removeSuffix;
in {
  toCSSFile = file:
    let
      fileName = removeSuffix ".scss" (baseNameOf file);
      compiledStyles =
        pkgs.runCommand "compileScssFile" { buildInputs = [ pkgs.sass ]; } ''
          mkdir "$out"
          scss --sourcemap=none \
               --no-cache \
               --style compressed \
               --default-encoding utf-8 \
               "${file}" \
               >>"$out/${fileName}.css"
        '';
    in "${compiledStyles}/${fileName}.css";

  toFilteredImage = imageFile: options:
    let
      result = "result.png";
      filteredImage = pkgs.runCommand "filterWallpaper" {
        buildInputs = [ pkgs.imagemagick ];
      } ''
        mkdir "$out"
        convert ${options} ${imageFile} $out/${result}
      '';
    in "${filteredImage}/${result}";
}
