nix/flake.nix

96 lines
6 KiB
Nix
Raw Normal View History

2023-09-28 14:08:07 +02:00
{
description = "NixOS System Config";
inputs = {
2023-12-13 13:47:44 +01:00
nixpkgs.url = "nixpkgs/nixos-23.11";
2023-09-28 14:08:07 +02:00
# nixpkgs-wayland - Wayland-specific packages not in nixpkgs
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
2023-12-13 08:48:18 +01:00
# home-manager - Dotfile mnagement - add /master at the end to pull from master
2023-12-13 13:57:58 +01:00
home-manager.url = "github:nix-community/home-manager/release-23.11";
2023-09-28 14:08:07 +02:00
home-manager.inputs.nixpkgs.follows = "nixpkgs";
# lanzaboote - Secureboot Configuration
lanzaboote.url = "github:nix-community/lanzaboote";
lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
# nur - Nix User Repository - user-submitted / maintained packages
nur.url = "github:nix-community/NUR";
# sops-nix - Secret Management with SOPS using GPG Keys
sops-nix.url = "github:Mic92/sops-nix";
# doom-emacs - The Doom Emacs distribution`
doom-emacs.url = "github:nix-community/nix-doom-emacs";
# nixos-hardware - Hardware Configurations
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
# nixos-generators - Automated Image / ISO Creation
nixos-generators.url = "github:nix-community/nixos-generators";
nixos-generators.inputs.nixpkgs.follows = "nixpkgs";
# disko - Declarative Disk Partitioning
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
2023-09-29 12:18:14 +02:00
# Firefox theme, for "Gradience" GTK Theming
firefox-gnome-theme.url = "github:rafaelmardojai/firefox-gnome-theme";
firefox-gnome-theme.flake = false;
2023-12-09 13:12:07 +01:00
# deploy-rs, declarative NixOS deployments
2023-12-09 13:13:25 +01:00
deploy-rs.url = "github:serokell/deploy-rs";
2023-12-11 08:50:06 +01:00
deploy-rs.inputs.nixpkgs.follows = "nixpkgs";
2023-12-13 06:30:17 +01:00
# compose2nix - Convert docker-compose.yml files to nix syntax
compose2nix.url = "github:aksiksi/compose2nix";
compose2nix.inputs.nixpkgs.follows = "nixpkgs";
2023-09-28 14:08:07 +02:00
};
2023-12-09 13:12:45 +01:00
outputs = { self, nixpkgs, nixpkgs-wayland, home-manager, lanzaboote, nur, sops-nix, doom-emacs, nixos-generators, deploy-rs, ... } @inputs:
2023-09-28 14:08:07 +02:00
let
inherit (self) outputs;
2023-12-13 13:47:44 +01:00
stateVersion = "23.11";
2023-12-13 08:56:19 +01:00
hmStateVersion = "23.11";
2023-12-09 14:24:58 +01:00
libx = import ./lib { inherit self inputs outputs stateVersion hmStateVersion; };
2023-09-28 14:08:07 +02:00
in {
nixosConfigurations = {
2023-12-11 11:52:52 +01:00
osaka-linode-01 = libx.mkHost { hostname = "osaka-linode-01"; type = "small"; };
nixos-vm-01 = libx.mkHost { hostname = "nixos-vm-01"; };
2023-12-06 03:56:24 +01:00
framework-server = libx.mkHost { hostname = "framework-server"; };
2023-12-13 08:27:50 +01:00
# nixos-desktop = libx.mkHost { hostname = "nixos-desktop"; desktop = "gnome"; gpu = "nvidia"; };
# nixos-framework = libx.mkHost { hostname = "nixos-framework"; desktop = "hyprland"; gpu = "amd"; theme = "green"; };
2023-12-13 08:26:31 +01:00
backups-rpi4 = libx.mkHost { hostname = "backups-rpi4"; platform = "aarch64-linux"; type = "small"; };
piaware-rpi4 = libx.mkHost { hostname = "piaware-rpi4"; platform = "aarch64-linux"; type = "small"; };
nixos-rpi4-01 = libx.mkHost { hostname = "nixos-rpi4-01"; platform = "aarch64-linux"; type = "small"; };
2023-12-13 08:19:52 +01:00
nixos-rpi4-02 = libx.mkHost { hostname = "nixos-rpi4-02"; platform = "aarch64-linux"; type = "small"; };
nixos-rpi4-03 = libx.mkHost { hostname = "nixos-rpi4-03"; platform = "aarch64-linux"; type = "small"; };
2023-09-28 14:08:07 +02:00
};
homeConfigurations = {
2023-12-11 11:52:52 +01:00
"albert@osaka-linode-01" = libx.mkHome { hostname = "osaka-linode-01"; };
"albert@nixos-vm-01" = libx.mkHome { hostname = "nixos-vm-01"; };
2023-11-25 07:17:29 +01:00
"albert@framework-server" = libx.mkHome { hostname = "framework-server"; };
2023-12-13 08:27:50 +01:00
# "albert@nixos-desktop" = libx.mkHome { hostname = "nixos-desktop"; desktop = "gnome"; };
# "albert@nixos-framework" = libx.mkHome { hostname = "nixos-framework"; desktop = "hyprland"; theme = "green"; };
2023-12-13 06:17:46 +01:00
"albert@backups-rpi4" = libx.mkHome { hostname = "backups-rpi4"; platform = "aarch64-linux"; type = "small"; };
"albert@piaware-rpi4" = libx.mkHome { hostname = "piaware-rpi4"; platform = "aarch64-linux"; type = "small"; };
"albert@nixos-rpi4-01" = libx.mkHome { hostname = "nixos-rpi4-01"; platform = "aarch64-linux"; type = "small"; };
"albert@nixos-rpi4-02" = libx.mkHome { hostname = "nixos-rpi4-02"; platform = "aarch64-linux"; type = "small"; };
"albert@nixos-rpi4-03" = libx.mkHome { hostname = "nixos-rpi4-03"; platform = "aarch64-linux"; type = "small"; };
2023-09-28 14:08:07 +02:00
};
2023-12-09 14:10:15 +01:00
deploy.nodes = {
osaka-linode-01 = libx.deploy { hostname = "osaka-linode-01"; };
nixos-vm-01 = libx.deploy { hostname = "nixos-vm-01"; };
framework-server = libx.deploy { hostname = "framework-server"; };
2023-12-13 08:27:50 +01:00
# nixos-desktop = libx.deploy { hostname = "nixos-desktop"; };
# nixos-framework = libx.deploy { hostname = "nixos-framework"; };
2023-12-13 08:49:43 +01:00
# backups-rpi4 = libx.deploy { hostname = "backups-rpi4"; platform = "aarch64-linux"; };
# piaware-rpi4 = libx.deploy { hostname = "piaware-rpi4"; platform = "aarch64-linux"; };
2023-12-12 05:04:03 +01:00
nixos-rpi4-01 = libx.deploy { hostname = "nixos-rpi4-01"; platform = "aarch64-linux"; };
2023-12-13 08:49:43 +01:00
# nixos-rpi4-02 = libx.deploy { hostname = "nixos-rpi4-02"; platform = "aarch64-linux"; };
2023-12-09 14:12:35 +01:00
nixos-rpi4-03 = libx.deploy { hostname = "nixos-rpi4-03"; platform = "aarch64-linux"; };
2023-12-09 14:10:15 +01:00
};
2023-12-12 05:27:40 +01:00
imageConfigurations = {
nixos-linode-img = libx.mkMinImage { hostname = "nixos-linode-img"; format = "linode"; };
nixos-rpi4-img = libx.mkImage { hostname = "nixos-rpi4-img"; format = "sd-aarch64"; platform = "aarch64-linux"; };
nixos-iso-console = libx.mkImage { hostname = "nixos-iso-console"; format = "iso"; };
nixos-iso-desktop = libx.mkImage { hostname = "nixos-iso-desktop"; format = "iso"; desktop = "gnome"; };
};
2023-12-12 05:29:35 +01:00
# Checks for deploy-rs - Makes deploy-rs fail when system evaluations fail
2023-12-13 04:23:41 +01:00
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
2023-12-12 05:29:35 +01:00
# Devshell for bootstrapping; acessible via 'nix develop'
devShells = libx.forAllSystems (system:
let pkgs = nixpkgs.legacyPackages.${system};
in import ./shell.nix { inherit pkgs sops-nix deploy-rs system; }
);
2023-09-28 14:08:07 +02:00
};
}