207 lines
6.2 KiB
Nix
207 lines
6.2 KiB
Nix
{
|
|
description = "Nixos config flake";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
|
|
|
nixpkgs-us.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager/release-25.11";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
disko = {
|
|
url = "github:nix-community/disko";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
sops-nix = {
|
|
url = "github:Mic92/sops-nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
|
|
firefox-addons = {
|
|
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
|
|
|
|
#simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.11";
|
|
|
|
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
|
|
|
nixvim.url = "git+https://gitea.esotericbytes.com/Blunkall-Technologies/Moirai";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, home-manager, ... } @ inputs: {
|
|
|
|
profiles = let
|
|
dir = builtins.readDir ./system/profiles;
|
|
filtered = builtins.filter (x: dir.${x} == "directory") (builtins.attrNames dir);
|
|
in (builtins.listToAttrs
|
|
(builtins.map
|
|
(name: ({
|
|
inherit name;
|
|
|
|
value = { ... }: {
|
|
imports = [
|
|
./system
|
|
./system/profiles/${name}
|
|
];
|
|
};
|
|
})) filtered)
|
|
);
|
|
|
|
homes = let
|
|
dir = builtins.readDir ./system/users;
|
|
filtered = builtins.filter (x: dir.${x} == "directory") (builtins.attrNames dir);
|
|
in (builtins.listToAttrs
|
|
(builtins.map
|
|
(name: ({
|
|
inherit name;
|
|
|
|
value = { ... } @ exputs: {
|
|
imports = [
|
|
(./system/users/${name}/home-manager (inputs // exputs))
|
|
];
|
|
};
|
|
})) filtered)
|
|
);
|
|
|
|
iso = (nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
specialArgs = {
|
|
inputs = inputs // {
|
|
nathan = self.homes.nathan;
|
|
inherit self;
|
|
};
|
|
};
|
|
modules = [
|
|
self.profiles.iso
|
|
];
|
|
}).config.system.build.isoImage;
|
|
|
|
templates = {
|
|
nixos = {
|
|
welcomeText = ''
|
|
#Welcome to Olympus!
|
|
Have Fun!
|
|
'';
|
|
|
|
description = ''
|
|
Generate this where you want your config.
|
|
'';
|
|
|
|
path = ./templates/nixos;
|
|
|
|
};
|
|
|
|
home-manager = {
|
|
welcomeText = ''
|
|
#Welcome to Olympus!
|
|
Have Fun!
|
|
'';
|
|
|
|
description = ''
|
|
Generate this where you want your config.
|
|
'';
|
|
|
|
path = ./templates/home-manager;
|
|
|
|
};
|
|
|
|
nix-on-droid = {
|
|
welcomeText = ''
|
|
#Welcome to Olympus!
|
|
Have Fun!
|
|
'';
|
|
|
|
description = ''
|
|
Generate this where you want your config.
|
|
'';
|
|
|
|
path = ./templates/nix-on-droid;
|
|
|
|
};
|
|
|
|
machines = let
|
|
dir = builtins.readDir ./machines;
|
|
filtered = builtins.filter (x: dir.${x} == "directory") (builtins.attrNames dir);
|
|
in (builtins.listToAttrs
|
|
(builtins.map
|
|
(name: ({
|
|
inherit name;
|
|
|
|
value = {
|
|
welcomeText = ''
|
|
#Welcome to Olympus!
|
|
|
|
##Warning:
|
|
This is a config for ${name}, an established machine!
|
|
It may require significant alterations to be usable!
|
|
'';
|
|
|
|
description = ''
|
|
Generate this where you want your config.
|
|
'';
|
|
|
|
path = ./machines/${name};
|
|
};
|
|
|
|
})) filtered)
|
|
);
|
|
|
|
homes = let
|
|
dir = builtins.readDir ./homes;
|
|
filtered = builtins.filter (x: dir.${x} == "directory") (builtins.attrNames dir);
|
|
in (builtins.listToAttrs
|
|
(builtins.map
|
|
(name: ({
|
|
inherit name;
|
|
|
|
value = {
|
|
welcomeText = ''
|
|
#Welcome home, ${name}!
|
|
Your config is right here.
|
|
'';
|
|
|
|
description = ''
|
|
Generate this where you want your config.
|
|
'';
|
|
|
|
path = ./homes/${name};
|
|
};
|
|
|
|
})) filtered)
|
|
);
|
|
|
|
default = self.templates.nixos;
|
|
};
|
|
|
|
|
|
nixosConfigurations = let
|
|
dir = builtins.readDir ./machines;
|
|
filtered = builtins.filter (x: dir.${x} == "directory" && x != "android") (builtins.attrNames dir);
|
|
in (builtins.listToAttrs
|
|
(builtins.map
|
|
(name: ({
|
|
inherit name;
|
|
|
|
value = nixpkgs.lib.nixosSystem {
|
|
specialArgs = inputs;
|
|
|
|
modules = [
|
|
{ sysconfig.host = name; }
|
|
./machines/${name}
|
|
self.profiles.${name}
|
|
];
|
|
};
|
|
|
|
})) filtered)
|
|
);
|
|
};
|
|
}
|