{ description = "b12f hosts"; nixConfig.extra-experimental-features = "nix-command flakes"; inputs = { # Track channels with commits tested and built by hydra nixos.url = "github:nixos/nixpkgs/nixos-23.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-compat.url = "github:edolstra/flake-compat"; flake-compat.flake = false; nix-darwin.url = "github:lnl7/nix-darwin/master"; nix-darwin.inputs.nixpkgs.follows = "nixos"; home-manager.url = "github:nix-community/home-manager/release-23.05"; home-manager.inputs.nixpkgs.follows = "nixos"; flake-parts.url = "github:hercules-ci/flake-parts"; nixos-flake.url = "github:srid/nixos-flake"; deploy-rs.url = "github:serokell/deploy-rs"; deploy-rs.inputs.nixpkgs.follows = "nixos"; deploy-rs.inputs.flake-compat.follows = "flake-compat"; agenix.url = "github:ryantm/agenix"; agenix.inputs.nixpkgs.follows = "nixos"; agenix.inputs.darwin.follows = "nix-darwin"; nixos-hardware.url = "github:nixos/nixos-hardware"; keycloak-theme-pub-solar.url = "git+https://git.pub.solar/pub-solar/keycloak-theme?ref=main"; keycloak-theme-pub-solar.inputs.nixpkgs.follows = "nixos"; master.url = "github:nixos/nixpkgs/master"; fix-yubikey-agent.url = "github:pub-solar/nixpkgs/fix/use-latest-unstable-yubikey-agent"; fix-atomic-container-restarts.url = "github:pub-solar/nixpkgs/fix/atomic-container-restarts"; scan2paperless.url = "git+https://git.pub.solar/b12f/scan2paperless.git"; musnix.url = "github:musnix/musnix"; adblock-unbound.url = "github:MayNiklas/nixos-adblock-unbound"; adblock-unbound.inputs.nixpkgs.follows = "nixos"; }; outputs = inputs@{ self, ... }: inputs.flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; imports = [ inputs.nixos-flake.flakeModule ]; perSystem = { system, pkgs, config, ... }: { # Code to consume overlays, see https://flake.parts/overlays#consuming-an-overlay _module.args.pkgs = import inputs.nixos { inherit system; overlays = [ inputs.agenix.overlays.default (import ./pkgs/default.nix) ]; }; devShells.default = pkgs.mkShell { buildInputs = [ pkgs.nixpkgs-fmt pkgs.sops pkgs.ssh-to-age ]; }; }; flake = { # Configurations for Linux (NixOS) machines nixosConfigurations = { biolimo = self.nixos-flake.lib.mkLinuxSystem { nixpkgs.hostPlatform = "x86_64-linux"; imports = [ self.nixosModules.base ./hosts/biolimo/default.nix ./users/b12f/default.nix ]; }; chocolatebar = self.nixos-flake.lib.mkLinuxSystem { nixpkgs.hostPlatform = "x86_64-linux"; imports = [ self.nixosModules.base ./hosts/chocolatebar/default.nix ./users/b12f/default.nix ]; }; pie = self.nixos-flake.lib.mkLinuxSystem { nixpkgs.hostPlatform = "aarch64-linux"; imports = [ self.nixosModules.base inputs.nixos-hardware.nixosModules.raspberry-pi-4 ./hosts/pie/default.nix ./users/yule/default.nix ]; }; maoam = self.nixos-flake.lib.mkLinuxSystem { nixpkgs.hostPlatform = "aarch64-linux"; imports = [ self.nixosModules.base ./hosts/maoam/default.nix ./users/yule/default.nix ]; }; }; nixosModules = rec { arduino = import ./modules/arduino/default.nix; audio = import ./modules/audio/default.nix; # ci-runner = import ./modules/ci-runner/default.nix; core = import ./modules/core/default.nix; crypto = import ./modules/crypto/default.nix; devops = import ./modules/devops/default.nix; # docker = import ./modules/docker/default.nix; # docker-ci-runner = import ./modules/docker-ci-runner/default.nix; email = import ./modules/email/default.nix; gaming = import ./modules/gaming/default.nix; graphical = import ./modules/graphical/default.nix; mobile = import ./modules/mobile/default.nix; # nextcloud = import ./modules/nextcloud/default.nix; # office = import ./modules/office/default.nix; paperless = import ./modules/paperless/default.nix; paranoia = import ./modules/paranoia/default.nix; printing = import ./modules/printing/default.nix; social = import ./modules/social/default.nix; sway = import ./modules/sway/default.nix; terminal-life = import ./modules/terminal-life/default.nix; uhk = import ./modules/uhk/default.nix; user = import ./modules/user/default.nix; # virtualisation = import ./modules/virtualisation/default.nix; root = import ./users/root/default.nix; base.imports = [ self.nixosModules.home-manager inputs.agenix.nixosModules.default inputs.musnix.nixosModules.musnix ({ flake, pkgs, lib, ... }: { nixpkgs.overlays = [ (import ./pkgs/default.nix) ]; }) arduino audio # ci-runner core crypto devops # docker # docker-ci-runner email gaming graphical mobile # nextcloud # office paperless paranoia printing social sway terminal-life uhk user # virtualisation root ]; full-install = { # pub-solar.audio.bluetooth.enable = true; # pub-solar.docker.enable = true; # pub-solar.nextcloud.enable = true; # pub-solar.office.enable = true; }; }; homeModules = { }; }; # deploy.nodes = { # droppie = { # hostname = "backup.b12f.io"; # sshUser = "yule"; # remoteBuild = true; # path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.droppie; # }; # pie = { # sshUser = "yule"; # remoteBuild = true; # path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pie; # }; # maoam = { # sshUser = "b12f"; # remoteBuild = true; # path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.maoam; # }; # }; # checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) inputs.deploy-rs.lib; }; }