2023-09-28 14:08:07 +02:00
|
|
|
{
|
|
|
|
description = "NixOS System Config";
|
2023-12-15 13:45:45 +01:00
|
|
|
inputs = {
|
2024-01-31 03:36:27 +01:00
|
|
|
# Stable Packages
|
2024-06-12 12:15:32 +02:00
|
|
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
2024-01-31 03:36:27 +01:00
|
|
|
# Unstable Packages
|
|
|
|
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
2023-12-15 13:45:45 +01:00
|
|
|
# home-manager - Dotfile mnagement - add /master at the end to pull from master
|
2024-06-12 12:15:32 +02:00
|
|
|
home-manager.url = "github:nix-community/home-manager";
|
2023-12-15 13:45:45 +01:00
|
|
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
2024-01-30 12:46:32 +01:00
|
|
|
# Nix colorizer / themer
|
2024-06-12 12:15:32 +02:00
|
|
|
stylix.url = "github:danth/stylix";
|
2024-04-08 14:56:39 +02:00
|
|
|
# nixvim - neovim configuration management in nix
|
2024-06-12 12:15:32 +02:00
|
|
|
nixvim.url = "github:nix-community/nixvim";
|
2023-12-15 13:45:45 +01:00
|
|
|
# lanzaboote - Secureboot Configuration
|
|
|
|
lanzaboote.url = "github:nix-community/lanzaboote";
|
|
|
|
lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
|
2024-01-31 03:36:27 +01:00
|
|
|
# nixpkgs-wayland - Wayland-specific packages not in nixpkgs
|
|
|
|
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
|
2023-12-15 13:45:45 +01:00
|
|
|
# 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";
|
|
|
|
# Firefox theme, for "Gradience" GTK Theming
|
|
|
|
firefox-gnome-theme.url = "github:rafaelmardojai/firefox-gnome-theme";
|
|
|
|
firefox-gnome-theme.flake = false;
|
|
|
|
# deploy-rs, declarative NixOS deployments
|
|
|
|
deploy-rs.url = "github:serokell/deploy-rs";
|
|
|
|
deploy-rs.inputs.nixpkgs.follows = "nixpkgs";
|
2024-01-01 06:05:29 +01:00
|
|
|
# Manage Plasma desktop with Nix
|
|
|
|
plasma-manager.url = "github:pjones/plasma-manager";
|
2024-06-12 14:27:57 +02:00
|
|
|
plasma-manager.inputs.nixpkgs.follows = "nixpkgs";
|
2024-02-07 12:35:31 +01:00
|
|
|
# Hyprland Flake
|
|
|
|
hyprland.url = "github:hyprwm/Hyprland";
|
2024-04-24 06:13:51 +02:00
|
|
|
# Steam Deck configs for NixOS
|
2024-04-26 06:17:54 +02:00
|
|
|
jovian.url = "github:Jovian-Experiments/Jovian-NixOS";
|
2024-01-07 04:03:33 +01:00
|
|
|
};
|
2024-04-26 13:49:35 +02:00
|
|
|
outputs = { self, nixpkgs, nixpkgs-wayland, home-manager, lanzaboote, nur, sops-nix, doom-emacs, nixos-generators, deploy-rs, jovian, ... } @inputs:
|
2023-09-28 14:08:07 +02:00
|
|
|
let
|
|
|
|
inherit (self) outputs;
|
2024-01-30 12:46:32 +01:00
|
|
|
stateVersion = "23.11";
|
|
|
|
hmStateVersion = "23.11";
|
2024-02-09 14:46:41 +01:00
|
|
|
libx = import ./lib { inherit self inputs outputs stateVersion hmStateVersion; };
|
2023-09-28 14:08:07 +02:00
|
|
|
in {
|
|
|
|
nixosConfigurations = {
|
2024-06-23 12:11:32 +02:00
|
|
|
osaka-linode-01 = libx.mkHost { hostname = "osaka-linode-01"; type = "small";};
|
|
|
|
milan-linode-01 = libx.mkHost { hostname = "milan-linode-01"; type = "small";};
|
|
|
|
frankfurt-linode-01 = libx.mkHost { hostname = "frankfurt-linode-01"; type = "small";};
|
|
|
|
framework-server = libx.mkHost { hostname = "framework-server"; };
|
|
|
|
nuc-server = libx.mkHost { hostname = "nuc-server"; };
|
|
|
|
nixos-desktop = libx.mkHost { hostname = "nixos-desktop"; unfree = true; desktop = "hyprland"; theme = "green"; };
|
|
|
|
nixos-framework = libx.mkHost { hostname = "nixos-framework"; unfree = true; desktop = "plasma6"; };
|
|
|
|
backups-rpi4 = libx.mkHost { hostname = "backups-rpi4"; system = "aarch64-linux"; type = "small"; };
|
|
|
|
piaware-rpi4 = libx.mkHost { hostname = "piaware-rpi4"; system = "aarch64-linux"; type = "small"; };
|
|
|
|
quitman-rpi4 = libx.mkHost { hostname = "quitman-rpi4"; system = "aarch64-linux"; type = "small"; };
|
|
|
|
bakersfield-rpi4 = libx.mkHost { hostname = "bakersfield-rpi4"; system = "aarch64-linux"; type = "small"; };
|
|
|
|
steamdeck = libx.mkDeck { hostname = "steamdeck"; desktop = "plasma6"; theme = "stylix"; };
|
2023-09-28 14:08:07 +02:00
|
|
|
};
|
|
|
|
homeConfigurations = {
|
2024-06-23 12:11:32 +02:00
|
|
|
"albert@osaka-linode-01" = libx.mkHome { hostname = "osaka-linode-01"; type = "small"; };
|
|
|
|
"albert@milan-linode-01" = libx.mkHome { hostname = "milan-linode-01"; type = "small"; };
|
|
|
|
"albert@frankfurt-linode-01" = libx.mkHome { hostname = "frankfurt-linode-01"; type = "small"; };
|
|
|
|
"albert@framework-server" = libx.mkHome { hostname = "framework-server"; };
|
|
|
|
"albert@nuc-server" = libx.mkHome { hostname = "nuc-server"; };
|
|
|
|
"albert@nixos-desktop" = libx.mkHome { hostname = "nixos-desktop"; desktop = "hyprland"; theme = "green"; };
|
|
|
|
"albert@nixos-framework" = libx.mkHome { hostname = "nixos-framework"; desktop = "plasma6"; };
|
|
|
|
"albert@backups-rpi4" = libx.mkHome { hostname = "backups-rpi4"; system = "aarch64-linux"; type = "small"; };
|
|
|
|
"albert@piaware-rpi4" = libx.mkHome { hostname = "piaware-rpi4"; system = "aarch64-linux"; type = "small"; };
|
|
|
|
"albert@quitman-rpi4" = libx.mkHome { hostname = "quitman-rpi4"; system = "aarch64-linux"; type = "small"; };
|
|
|
|
"albert@bakersfield-rpi4" = libx.mkHome { hostname = "bakersfield-rpi4"; system = "aarch64-linux"; type = "small"; };
|
|
|
|
"albert@steamdeck" = libx.mkHome { hostname = "steamdeck"; desktop = "plasma6"; };
|
2024-03-20 14:59:42 +01:00
|
|
|
# Containers
|
2024-06-23 12:11:32 +02:00
|
|
|
"albert@rdesktop" = libx.mkHome { hostname = "rdesktop"; desktop = "plasma6"; };
|
2023-09-28 14:08:07 +02:00
|
|
|
};
|
2023-12-09 14:10:15 +01:00
|
|
|
deploy.nodes = {
|
2024-06-23 12:11:32 +02:00
|
|
|
osaka-linode-01 = libx.deploy { hostname = "osaka-linode-01"; };
|
|
|
|
milan-linode-01 = libx.deploy { hostname = "milan-linode-01"; };
|
|
|
|
frankfurt-linode-01 = libx.deploy { hostname = "frankfurt-linode-01"; };
|
|
|
|
|
|
|
|
framework-server = libx.deploy { hostname = "framework-server"; };
|
|
|
|
# nuc-server = libx.deploy { hostname = "nuc-server"; };
|
|
|
|
backups-rpi4 = libx.deploy { hostname = "backups-rpi4"; system = "aarch64-linux"; };
|
|
|
|
piaware-rpi4 = libx.deploy { hostname = "piaware-rpi4"; system = "aarch64-linux"; };
|
|
|
|
bakersfield-rpi4 = libx.deploy { hostname = "bakersfield-rpi4"; system = "aarch64-linux"; };
|
|
|
|
# quitman-rpi4 = libx.deploy { hostname = "quitman-rpi4"; system = "aarch64-linux"; };
|
2023-12-09 14:10:15 +01:00
|
|
|
};
|
2023-12-12 05:27:40 +01:00
|
|
|
imageConfigurations = {
|
2024-01-06 13:47:19 +01:00
|
|
|
nixos-linode-img = libx.mkMinImage { hostname = "nixos-linode-img"; format = "linode"; };
|
2024-01-31 04:31:01 +01:00
|
|
|
nixos-rpi4-img = libx.mkImage { hostname = "nixos-rpi4-img"; format = "sd-aarch64"; system = "aarch64-linux"; };
|
2023-12-12 05:27:40 +01:00
|
|
|
nixos-iso-console = libx.mkImage { hostname = "nixos-iso-console"; format = "iso"; };
|
2024-06-23 09:10:56 +02:00
|
|
|
nixos-iso-desktop = libx.mkImage { hostname = "nixos-iso-desktop"; format = "iso"; desktop = "plasma6"; unfree = true; };
|
2023-12-12 05:27:40 +01:00
|
|
|
};
|
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
|
|
|
};
|
2024-01-30 12:46:32 +01:00
|
|
|
}
|