nixos-configs/flake.in.nix

182 lines
4.1 KiB
Nix
Raw Normal View History

{
inputs = let
inherit (import ./inputs.nix) mkDep mkInput otherInputs;
mainInputs = {
nixpkgs = mkInput {
owner = "NixOS";
repo = "nixpkgs";
2024-06-19 19:19:25 -04:00
ref = "nixos-unstable";
};
home-manager = mkDep {
2024-06-11 19:17:20 -04:00
owner = "nix-community";
repo = "home-manager";
};
nix-on-droid = mkDep {
owner = "nix-community";
repo = "nix-on-droid";
inputs.home-manager.follows = "home-manager";
};
sops-nix = mkDep {
owner = "Mic92";
repo = "sops-nix";
};
secrets = mkDep {
type = "git";
url = "ssh://git@git.nelim.org/matt1432/nixos-secrets";
inputs.sops-nix.follows = "sops-nix";
};
2024-06-28 13:44:12 -04:00
jovian = mkDep {
owner = "Jovian-Experiments";
repo = "Jovian-NixOS";
};
};
in
mainInputs // otherInputs;
outputs = inputs @ {
nixpkgs,
secrets,
self,
...
}: let
2024-06-13 22:27:54 -04:00
inherit (import ./lib.nix inputs) mkVersion mkNixOS mkNixOnDroid mkPkgs;
supportedSystems = ["x86_64-linux" "aarch64-linux"];
perSystem = attrs:
nixpkgs.lib.genAttrs supportedSystems (system:
attrs system (mkPkgs system nixpkgs));
in {
nixosModules = {
2024-07-14 19:30:28 -04:00
adb = import ./modules/adb.nix;
desktop = import ./modules/desktop;
nvidia = import ./modules/nvidia.nix;
2024-07-10 20:38:03 -04:00
plymouth = import ./modules/plymouth.nix;
};
nixosConfigurations = {
# Desktops
wim = mkNixOS [
./devices/wim
secrets.nixosModules.default
];
binto = mkNixOS [./devices/binto];
bbsteamie = mkNixOS [./devices/bbsteamie];
# NAS
nos = mkNixOS [
./devices/nos
secrets.nixosModules.nos
];
# Build / test server
servivi = mkNixOS [
./devices/servivi
secrets.nixosModules.servivi
];
# Cluster
thingone = mkNixOS [
(import ./devices/cluster "thingone")
secrets.nixosModules.thingy
];
thingtwo = mkNixOS [
(import ./devices/cluster "thingtwo")
secrets.nixosModules.thingy
];
live-image = mkNixOS [
("${nixpkgs}/nixos/modules/installer/"
+ "cd-dvd/installation-cd-minimal.nix")
{home-manager.users.nixos.home.stateVersion = "24.05";}
{
vars = {
mainUser = "nixos";
hostName = "nixos";
};
}
];
};
nixOnDroidConfigurations.default = mkNixOnDroid [./devices/android];
legacyPackages = perSystem (system: pkgs: let
mkScope = file:
2024-06-10 22:57:20 -04:00
pkgs.lib.recurseIntoAttrs
(pkgs.callPackage file ({inherit mkVersion;} // inputs));
in {
dracula = mkScope ./pkgs/dracula;
firefoxAddons = mkScope ./pkgs/firefox-addons;
mpvScripts = mkScope ./pkgs/mpv-scripts;
2024-06-10 22:57:20 -04:00
});
packages =
perSystem (system: pkgs:
2024-06-13 22:27:54 -04:00
import ./pkgs ({inherit self system pkgs mkVersion;} // inputs));
devShells = perSystem (_: pkgs: {
default = pkgs.mkShell {
packages = with pkgs; [
alejandra
git
nix-output-monitor
(writeShellScriptBin "mkIso" (lib.concatStrings [
"nom build $(realpath /etc/nixos)#nixosConfigurations."
"live-image.config.system.build.isoImage"
]))
];
};
node = pkgs.mkShell {
packages = with pkgs;
[
nodejs_latest
typescript
]
++ (with nodePackages; [
ts-node
]);
};
subtitles-dev = pkgs.mkShell {
packages = with pkgs;
[
nodejs_latest
ffmpeg-full
typescript
]
++ (with nodePackages; [
ts-node
]);
};
});
formatter = perSystem (_: pkgs: pkgs.alejandra);
# Scripts
apps = perSystem (system: pkgs: let
inherit (pkgs) lib callPackage;
in {
updateFlake = {
program = lib.getExe (callPackage ./apps/update ({} // inputs));
type = "app";
};
});
# For nix-fast-build
checks =
perSystem (system: pkgs:
import ./ci.nix {inherit system pkgs self;});
};
}