2021-07-13 09:53:22 +01:00
|
|
|
{
|
|
|
|
inputs = {
|
2024-06-01 11:41:26 +01:00
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/release-24.05";
|
2024-06-30 17:45:54 +01:00
|
|
|
nixos-unstable.url = "github:NixOS/nixpkgs/master";
|
2024-04-24 16:05:05 +01:00
|
|
|
local-unstable.url = "path:///home/giulio/dev/nixpkgs";
|
2024-11-17 20:31:45 +00:00
|
|
|
teslamate-flake.url = "github:teslamate-org/teslamate/v1.31.1";
|
2021-07-13 09:53:22 +01:00
|
|
|
home-manager = {
|
2024-06-01 11:41:26 +01:00
|
|
|
url = "github:nix-community/home-manager/release-24.05";
|
2021-07-13 09:53:22 +01:00
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
2021-11-25 11:42:32 +00:00
|
|
|
};
|
2024-07-16 22:01:14 +01:00
|
|
|
nvidia-patch = {
|
|
|
|
url = "github:icewind1991/nvidia-patch-nixos";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2021-07-13 09:53:22 +01:00
|
|
|
};
|
2021-10-13 13:29:07 +01:00
|
|
|
|
2024-11-17 20:31:45 +00:00
|
|
|
outputs = { self, nixpkgs, nixos-unstable, local-unstable, home-manager, teslamate-flake, nvidia-patch }:
|
2021-11-25 11:42:32 +00:00
|
|
|
let
|
2023-02-10 22:29:44 +00:00
|
|
|
sysLinuxX64 = "x86_64-linux";
|
|
|
|
sysDarwin = "aarch64-darwin";
|
2023-02-06 22:38:00 +00:00
|
|
|
sysLinuxAarch = "aarch64-linux";
|
2021-10-13 13:29:07 +01:00
|
|
|
|
2024-03-12 18:43:00 +00:00
|
|
|
wrapPkgsSystem = { system, cudaSupport ? false }:
|
2024-03-12 18:41:03 +00:00
|
|
|
let
|
|
|
|
config = {
|
2024-03-12 18:43:00 +00:00
|
|
|
inherit cudaSupport;
|
2024-03-12 18:41:03 +00:00
|
|
|
allowUnfree = true;
|
|
|
|
};
|
2024-07-16 22:01:14 +01:00
|
|
|
|
|
|
|
extOverlays = [
|
|
|
|
(nvidia-patch.overlays.default)
|
|
|
|
];
|
2024-03-12 18:41:03 +00:00
|
|
|
in
|
2022-10-13 18:05:31 +01:00
|
|
|
import nixpkgs rec {
|
2024-03-12 18:41:03 +00:00
|
|
|
inherit system config;
|
2023-02-15 20:38:50 +00:00
|
|
|
|
2024-03-12 18:41:03 +00:00
|
|
|
unstablePkgs = import nixos-unstable {
|
|
|
|
inherit system config;
|
2024-07-16 22:01:14 +01:00
|
|
|
|
|
|
|
overlays = extOverlays;
|
2024-02-21 11:43:26 +00:00
|
|
|
};
|
2024-03-12 18:41:03 +00:00
|
|
|
|
|
|
|
localPkgs = import local-unstable {
|
|
|
|
inherit system config;
|
2024-07-16 22:01:14 +01:00
|
|
|
overlays = extOverlays;
|
2024-02-21 11:43:26 +00:00
|
|
|
};
|
2024-03-12 18:41:03 +00:00
|
|
|
|
2024-11-17 20:31:45 +00:00
|
|
|
teslamatePkgs = import teslamate-flake {
|
|
|
|
inherit system config;
|
|
|
|
overlays = extOverlays;
|
|
|
|
};
|
|
|
|
|
2022-10-13 18:05:31 +01:00
|
|
|
overlays = [
|
2023-02-14 20:30:37 +00:00
|
|
|
(final: prev: { inherit unstablePkgs; })
|
2024-02-21 11:43:26 +00:00
|
|
|
(final: prev: { inherit localPkgs; })
|
2024-11-17 20:31:45 +00:00
|
|
|
(final: prev: { inherit teslamatePkgs; })
|
2024-07-16 22:01:14 +01:00
|
|
|
] ++ extOverlays;
|
2022-10-13 18:05:31 +01:00
|
|
|
};
|
2021-10-13 13:29:07 +01:00
|
|
|
|
2024-11-17 20:31:45 +00:00
|
|
|
wrapUtils = { pkgs }:
|
2023-02-14 16:20:55 +00:00
|
|
|
let
|
|
|
|
inherit (pkgs.lib) makeScope;
|
|
|
|
inherit (pkgs) newScope;
|
|
|
|
in
|
2023-02-14 20:14:30 +00:00
|
|
|
makeScope newScope (self: rec {
|
2023-02-19 05:01:34 +00:00
|
|
|
inherit nixpkgs home-manager nixos-unstable;
|
2023-02-14 20:14:30 +00:00
|
|
|
inherit (self.callPackage ./lib/utils.nix { }) mkSysRole mkHomeRole;
|
|
|
|
inherit (user) mkUser;
|
|
|
|
|
2023-02-11 02:09:42 +00:00
|
|
|
user = self.callPackage ./lib/user.nix { };
|
|
|
|
host = self.callPackage ./lib/host.nix { };
|
|
|
|
});
|
|
|
|
|
2023-02-11 01:32:17 +00:00
|
|
|
|
2024-03-13 18:38:32 +00:00
|
|
|
pkgsLinuxX64Cuda = wrapPkgsSystem { system = sysLinuxX64; };
|
2024-11-17 20:31:45 +00:00
|
|
|
utilsLinuxX64Cuda = wrapUtils { pkgs = pkgsLinuxX64Cuda; };
|
2022-10-13 23:46:59 +01:00
|
|
|
|
2023-02-19 05:02:59 +00:00
|
|
|
pkgsLinuxAarch = wrapPkgsSystem { system = sysLinuxAarch; };
|
2024-11-17 20:31:45 +00:00
|
|
|
utilsLinuxAarch = wrapUtils { pkgs = pkgsLinuxAarch; };
|
2023-02-06 22:33:36 +00:00
|
|
|
|
2023-02-19 05:02:59 +00:00
|
|
|
pkgsDarwin = wrapPkgsSystem { system = sysDarwin; };
|
2024-11-17 20:31:45 +00:00
|
|
|
utilsDarwin = wrapUtils { pkgs = pkgsDarwin; };
|
2022-11-22 12:05:53 +00:00
|
|
|
in
|
|
|
|
{
|
2021-11-25 11:42:32 +00:00
|
|
|
nixosConfigurations = {
|
2024-03-12 18:43:00 +00:00
|
|
|
architect = utilsLinuxX64Cuda.host.mkHost {
|
2021-11-25 11:42:32 +00:00
|
|
|
name = "architect";
|
2021-11-25 11:47:13 +00:00
|
|
|
users = [{
|
|
|
|
user = "giulio";
|
|
|
|
roles = [ ];
|
|
|
|
}];
|
2024-11-17 20:31:45 +00:00
|
|
|
imports = [
|
|
|
|
teslamate-flake.nixosModules.default
|
|
|
|
];
|
2021-11-25 11:42:32 +00:00
|
|
|
};
|
|
|
|
};
|
2023-02-17 17:04:32 +00:00
|
|
|
|
2023-02-06 22:30:35 +00:00
|
|
|
homeConfigurations = {
|
|
|
|
giulioMac = utilsDarwin.user.mkHMUser {
|
|
|
|
name = "giulio";
|
|
|
|
roles = [ "ssh" ];
|
|
|
|
};
|
2023-02-06 22:33:36 +00:00
|
|
|
giulioAarch = utilsLinuxAarch.user.mkHMUser {
|
|
|
|
name = "giulio";
|
|
|
|
roles = [ "ssh" ];
|
|
|
|
};
|
2024-03-12 18:43:00 +00:00
|
|
|
giulioX64 = utilsLinuxX64Cuda.user.mkHMUser {
|
2023-02-07 20:49:10 +00:00
|
|
|
name = "giulio";
|
2023-03-03 18:03:26 +00:00
|
|
|
roles = [ "ssh" "go" ];
|
2023-02-07 20:49:10 +00:00
|
|
|
};
|
2024-03-12 18:43:00 +00:00
|
|
|
giulioX64NoSSH = utilsLinuxX64Cuda.user.mkHMUser {
|
2023-03-03 18:04:12 +00:00
|
|
|
name = "giulio";
|
|
|
|
roles = [ "go" ];
|
|
|
|
};
|
2022-10-14 13:17:50 +01:00
|
|
|
};
|
2023-02-17 17:04:32 +00:00
|
|
|
|
|
|
|
defaultTemplate = self.templates.basicShell;
|
|
|
|
templates = {
|
2023-02-19 05:26:38 +00:00
|
|
|
basicShell = {
|
|
|
|
path = ./templates/basicShell;
|
|
|
|
description = "A barebone shell with custom defined packages";
|
|
|
|
};
|
2023-02-17 17:04:32 +00:00
|
|
|
};
|
2021-08-23 12:25:36 +01:00
|
|
|
};
|
2021-07-13 09:53:22 +01:00
|
|
|
}
|