{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs"; wrappers.url = "github:Lassulus/wrappers"; wrappers.inputs.nixpkgs.follows = "nixpkgs"; treefmt-nix.url = "github:numtide/treefmt-nix"; treefmt-nix.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs: let lib = inputs.nixpkgs.lib; eachSupportedSystem = lib.genAttrs lib.systems.flakeExposed; treefmtEval = eachSupportedSystem ( system: inputs.treefmt-nix.lib.evalModule inputs.nixpkgs.legacyPackages.${system} ( { pkgs, ... }: { projectRootFile = "flake.nix"; programs.nixfmt.enable = true; } ) ); in { nixosModules = { editor = modules/editor.nix; git = modules/git.nix; udiskie = modules/udiskie.nix; desktop = modules/desktop.nix; nix = modules/nix.nix; shell = modules/shell; }; overlays.default = final: prev: { niphas-terminal = prev.alacritty; niphas-web-browser = prev.qutebrowser; niphas-file-browser = prev.pcmanfm; niphas-runner = prev.writers.writeDashBin "niphas-runner" "${prev.lib.getExe prev.rofi} -show run"; niphas-locker = prev.swaylock; niphas-screenshot = prev.writers.writeDashBin "niphas-screenshot" '' ${prev.lib.getExe prev.grim} -g "$(${prev.lib.getExe prev.slurp})" - | ${prev.lib.getExe prev.satty} -f - ''; niphas-editor = prev.lib.makeOverridable (prev.callPackage packages/vim) { }; niphas-bar = import packages/ashell.nix { inherit (inputs) wrappers; pkgs = prev; }; niphas-git = import packages/git.nix { inherit (inputs) wrappers; pkgs = prev; }; niphas-niri = import packages/niri.nix { inherit (inputs) wrappers; pkgs = final; }; niphas-wallpaper = prev.runCommand "niphas-wallpaper.png" { buildInputs = [ prev.imagemagick ]; } '' # solid white convert -size 1920x1080 xc:white $out ''; niphas-set-wallpaper = prev.writers.writeDashBin "niphas-set-wallpaper" '' exec ${lib.getExe prev.swaybg} --mode fill --image ${toString final.niphas-wallpaper} ''; niphas-clipboard-watcher = prev.writers.writeDashBin "niphas-clipboard-watcher" '' exec ${lib.getExe' prev.wl-clipboard "wl-paste"} -t text --watch ${lib.getExe prev.clipman} store ''; niphas-clipman = prev.writers.writeDashBin "niphas-clipman" '' exec ${lib.getExe prev.clipman} pick --tool rofi ''; niphas-redshift = let geolocation = [ 52.5244 13.4105 ]; latitude = builtins.elemAt geolocation 0; longitude = builtins.elemAt geolocation 1; in prev.writers.writeDashBin "niphas-redshift" '' exec ${lib.getExe prev.wlsunset} -l ${toString latitude} -L ${toString longitude} ''; vimv = prev.callPackage packages/vimv.nix { }; }; packages = eachSupportedSystem ( system: let pkgs = import inputs.nixpkgs { inherit system; overlays = [ inputs.self.overlays.default ]; }; in { inherit (pkgs) niphas-bar niphas-git niphas-niri niphas-editor niphas-wallpaper niphas-set-wallpaper niphas-clipboard-watcher niphas-clipman niphas-redshift vimv ; } ); formatter = eachSupportedSystem (system: treefmtEval.${system}.config.build.wrapper); checks = eachSupportedSystem (system: { formatting = treefmtEval.${system}.config.build.check inputs.self; }); }; }