nixos/flake.nix
Giulio De Pasquale 2feb7de638 bump
2025-08-13 10:55:40 +01:00

110 lines
3.1 KiB
Nix

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/ddae11e58c0c345bf66efbddbf2192ed0e58f896";
nixos-unstable.url = "github:NixOS/nixpkgs/85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054";
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";
};
};
};
}