{ description = "The simple provisioning service"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; nixos-generators = { url = "github:nix-community/nixos-generators"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, nixos-generators, ... }: let lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101"; version = builtins.substring 0 8 lastModifiedDate; supportedSystems = [ "x86_64-linux" "aarch64-linux" ]; forAllSystems = nixpkgs.lib.genAttrs supportedSystems; nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); in { packages = forAllSystems (system: let pkgs = nixpkgsFor.${system}; in { default = pkgs.buildGoModule { pname = "client"; inherit version; src = ./client; vendorHash = null; }; boot-env-iso = nixos-generators.nixosGenerate { inherit system; format = "iso"; modules = [ ({modulesPath, ...}: { imports = [ (modulesPath + "/profiles/minimal.nix") (modulesPath + "/profiles/base.nix") ]; # Disable unneeded features ## boot.loader.grub.enable = true; ## boot.loader.grub.device = "nodev"; documentation.enable = false; fonts.fontconfig.enable = false; services.udisks2.enable = false; services.getty.autologinUser = "root"; environment.etc."profile.local".text = '' # Minimal shell prompt echo "It works!" ''; isoImage.squashfsCompression = "gzip -Xcompression-level 1"; }) ]; }; }); devShells = forAllSystems (system: let pkgs = nixpkgsFor.${system}; in { default = pkgs.mkShell { hardeningDisable = [ "fortify" ]; buildInputs = [ pkgs.bashInteractive pkgs.go pkgs.delve ]; }; }); }; }