{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; systems.url = "github:nix-systems/x86_64-linux"; flake-utils = { url = "github:numtide/flake-utils"; inputs.systems.follows = "systems"; }; }; outputs = inputs @ { self, nixpkgs, flake-utils, ... }: let inherit (self) outputs; drv = { stdenv, lib, libX11, libXScrnSaver, dbus, pkg-config, ... }: stdenv.mkDerivation { pname = "sleeptimer"; version = "0.0.1"; src = lib.cleanSource ./.; nativeBuildInputs = [pkg-config]; buildInputs = [libX11.dev libXScrnSaver dbus.dev]; installPhase = '' mkdir -p $out/bin cp sleeptimer $out/bin ''; }; in { overlays.default = final: prev: { sleeptimer = final.callPackage drv {inherit (final.llvmPackages_latest) stdenv;}; }; nixosModules = { default = {pkgs, ...}: { nixpkgs.overlays = [ outputs.overlays.default ]; environment.systemPackges = [pkgs.sleeptimer]; }; }; homeManagerModules = { default = {pkgs, ...}: { nixpkgs.overlays = [ outputs.overlays.default ]; home.packages = [pkgs.sleeptimer]; }; }; } // flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; llvm = pkgs.llvmPackages_latest; package = pkgs.callPackage drv {inherit (llvm) stdenv;}; in { devShells.default = pkgs.mkShell.override {inherit (llvm) stdenv;} { inputsFrom = [package]; packages = with pkgs; [ bear xz icu74 ]; }; packages = { default = package; }; }); }