{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/ce01daebf8489ba97bd1609d185ea276efdeb121"; nixos-unstable.url = "github:NixOS/nixpkgs/5b09dc45f24cf32316283e62aec81ffee3c3e376"; nixpkgs-master.url = "github:NixOS/nixpkgs/master"; local-unstable.url = "path:///home/giulio/dev/nixpkgs"; pepeflake.url = "git+https://git.giugl.io/peperunas/pepeflake"; agenix-flake.url = "github:ryantm/agenix"; home-manager = { url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; }; nvidia-patch = { url = "github:icewind1991/nvidia-patch-nixos"; inputs.nixpkgs.follows = "nixpkgs"; }; langtool-ngrams.url = "github:peperunas/nix-languagetool-ngram"; }; outputs = { self , nixpkgs , nixos-unstable , nixpkgs-master , local-unstable , home-manager , nvidia-patch , agenix-flake , pepeflake , langtool-ngrams }: let sysLinuxX64 = "x86_64-linux"; sysDarwin = "aarch64-darwin"; sysLinuxAarch = "aarch64-linux"; forAllSystems = nixpkgs.lib.genAttrs [ sysLinuxX64 sysLinuxAarch sysDarwin ]; mkSystem = (import ./lib/systems.nix { inherit nixpkgs; inputs = { inherit nixos-unstable nixpkgs-master local-unstable agenix-flake pepeflake langtool-ngrams nvidia-patch home-manager; }; }).mkSystem; linuxX64Cuda = mkSystem { system = sysLinuxX64; cudaSupport = true; }; linuxAarch = mkSystem { system = sysLinuxAarch; }; darwin = mkSystem { system = sysDarwin; }; in { nixosConfigurations = { architect = linuxX64Cuda.utils.host.mkHost { name = "architect"; users = [{ user = "giulio"; roles = [ ]; }]; imports = [ agenix-flake.nixosModules.default ]; }; }; homeConfigurations = { giulioMac = darwin.utils.user.mkHMUser { name = "giulio"; roles = [ "ssh" ]; }; gdepasqualeMac = darwin.utils.user.mkHMUser { name = "gdepasquale"; roles = [ "ssh" ]; }; giulioAarch = linuxAarch.utils.user.mkHMUser { name = "giulio"; roles = [ "ssh" ]; }; giulioX64 = linuxX64Cuda.utils.user.mkHMUser { name = "giulio"; roles = [ "ssh" "go" ]; }; giulioX64NoSSH = linuxX64Cuda.utils.user.mkHMUser { name = "giulio"; roles = [ "go" ]; }; gdepasqualeX64 = linuxX64Cuda.utils.user.mkHMUser { name = "gdepasquale"; roles = [ "ssh" "go" ]; }; }; packages = forAllSystems (system: let pkgs = nixpkgs.legacyPackages.${system}; in rec { default = update; update = pkgs.callPackage ./update.nix { }; }); defaultTemplate = self.templates.basicShell; templates = { basicShell = { path = ./templates/basicShell; description = "A barebone shell with custom defined packages"; }; }; }; }