/ flake.nix
flake.nix
1 { 2 inputs = { 3 nixpkgs.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"; 4 5 treefmt-nix.url = "github:numtide/treefmt-nix"; 6 treefmt-nix.inputs.nixpkgs.follows = "nixpkgs"; 7 }; 8 9 outputs = { 10 self, 11 nixpkgs, 12 treefmt-nix, 13 ... 14 }: let 15 inherit (nixpkgs) lib; 16 inherit (lib.attrsets) genAttrs mapAttrs' nameValuePair; 17 18 systems = ["x86_64-linux" "aarch64-linux"]; 19 forAllSystems = genAttrs systems; 20 nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system}); 21 treefmtFor = forAllSystems (system: treefmt-nix.lib.evalModule nixpkgsFor.${system} ./treefmt.nix); 22 23 package = import ./nix/package.nix; 24 in { 25 packages = forAllSystems (system: let 26 pkgs = nixpkgsFor.${system}; 27 avahi-subdomains = pkgs.callPackage package {}; 28 in { 29 default = avahi-subdomains; 30 inherit avahi-subdomains; 31 }); 32 33 overlays.default = _: prev: {avahi-subdomains = prev.callPackage package {};}; 34 35 nixosModules.default = import ./nix/module.nix; 36 37 devShells = forAllSystems (system: let 38 pkgs = nixpkgsFor.${system}; 39 in { 40 default = pkgs.mkShellNoCC { 41 inputsFrom = [self.packages.${system}.avahi-subdomains]; 42 }; 43 }); 44 45 formatter = forAllSystems (system: treefmtFor.${system}.config.build.wrapper); 46 47 checks = forAllSystems (system: let 48 packages = mapAttrs' (n: nameValuePair "package-${n}") self.packages.${system}; 49 devShells = mapAttrs' (n: nameValuePair "devShell-${n}") self.devShells.${system}; 50 formatting = {formatting = treefmtFor.${system}.config.build.check self;}; 51 in 52 packages // devShells // formatting); 53 }; 54 }