# https://nix.dev/ # https://github.com/barrucadu/nixfiles/tree/master # https://bitbucket.org/bzz/nixos/src/master/configuration.nix # https://grahamc.com/blog/erase-your-darlings/ # https://github.com/Misterio77/nix-starter-configs { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; lix-module.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz"; lix-module.inputs.nixpkgs.follows = "nixpkgs"; disko.url = "github:nix-community/disko/latest"; disko.inputs.nixpkgs.follows = "nixpkgs"; # Encrypted home: https://github.com/nix-community/home-manager/pull/6981 home-manager.url = "github:nix-community/home-manager/release-25.05"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; # Extras waveforms.url = "github:liff/waveforms-flake"; waveforms.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, disko, waveforms, lix-module }@inputs: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; pkgs-unstable = import nixpkgs-unstable { inherit system; config.allowUnfree = true; }; # Look into: https://git.sr.ht/~magic_rb/dotfiles/tree/master/item/nixos/systems/gooseberry pi_modules = [{ # Disabling the whole `profiles/base.nix` module, which is responsible # for adding ZFS and a bunch of other unnecessary programs: disabledModules = [ "profiles/base.nix" ]; # Allows for remote deployment via # nixos-rebuild -L switch --flake .?submodules=1#HOSTNAME --target-host USER@HOSTNAME #nix.settings.require-sigs = false; }]; # TODO: Surely a better way, no? _inherited_modules = [ home-manager.nixosModules.home-manager disko.nixosModules.default lix-module.nixosModules.default ]; in { homeManagerModules = { "lauren_lagarde" = [ { home.username = "lauren_lagarde"; home.homeDirectory = "/home/lauren_lagarde"; } ./home-manager/base.nix ]; "lauren_lagarde@ll-latitude-e5591" = self.homeManagerModules."lauren_lagarde" ++ [ ./home-manager/i3.nix ./secrets/mlaga97.nix ./secrets/mlaga97-gui.nix ./systems/ll-latitude-e5591/home.nix ]; }; homeConfigurations = { "lauren_lagarde@ll-latitude-e5591" = home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = self.homeManagerModules."lauren_lagarde@ll-latitude-e5591"; extraSpecialArgs = { inherit inputs pkgs-unstable; }; }; }; nixosConfigurations = { ll-latitude-e5591 = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ { networking.hostName = "ll-latitude-e5591"; networking.hostId = "f55542ee"; system.stateVersion = "24.11"; time.timeZone = "America/Chicago"; } ./systems/ll-latitude-e5591/configuration.nix ./nixos/disko/nvme/uefi-luks-lvm-ext4.nix lix-module.nixosModules.default home-manager.nixosModules.home-manager waveforms.nixosModule disko.nixosModules.default ]; specialArgs = { inherit inputs pkgs-unstable; }; }; ll-nixos-headless-pi = nixpkgs.lib.nixosSystem { system = "aarch64-linux"; modules = pi_modules ++ [ { networking.hostName = "ll-nixos-headless-pi"; boot.loader.grub.enable = false; boot.loader.generic-extlinux-compatible.enable = true; fileSystems = { "/" = { device = "/dev/disk/by-label/NIXOS_SD"; fsType = "ext4"; }; "/boot/firmware" = { device = "/dev/disk/by-label/FIRMWARE"; fsType = "vfat"; }; }; } ./systems/ll-nixos-headless.nix lix-module.nixosModules.default home-manager.nixosModules.home-manager waveforms.nixosModule disko.nixosModules.default ]; specialArgs = { inherit inputs pkgs-unstable; }; }; ll-nixos-base = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ { networking.hostName = "ll-nixos-base"; home-manager.users."lauren_lagarde" = { config, pkgs-unstable, ... }: { imports = inputs.mlaga97-home-manager.homeManagerModules."lauren_lagarde@ll-latitude-e5591"; }; } ./systems/ll-nixos-base.nix lix-module.nixosModules.default home-manager.nixosModules.home-manager waveforms.nixosModule disko.nixosModules.default ]; specialArgs = { inherit inputs pkgs-unstable; }; }; # Real Systems bastion-in-training = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./systems/bastion/bastion-in-training.nix lix-module.nixosModules.default home-manager.nixosModules.home-manager disko.nixosModules.default ]; }; bastion = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./systems/bastion/bastion-actual.nix lix-module.nixosModules.default home-manager.nixosModules.home-manager disko.nixosModules.default ]; }; stronghold = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ { networking.hostName = "stronghold"; networking.hostId = "c581a1cd"; } ./systems/vm-docker-base.nix lix-module.nixosModules.default home-manager.nixosModules.home-manager disko.nixosModules.default ]; }; vm-docker-luks-test = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ { networking.hostName = "vm-docker-luks-test"; networking.hostId = "1b5432b7"; } ./systems/vm-docker-luks.nix lix-module.nixosModules.default home-manager.nixosModules.home-manager disko.nixosModules.default ]; }; vm-docker-zfs-test = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ { networking.hostName = "vm-docker-zfs-test"; networking.hostId = "459ecfce"; } ./systems/vm-docker-host/vm-docker-host-zfs.nix lix-module.nixosModules.default home-manager.nixosModules.home-manager disko.nixosModules.default ]; }; }; #packages.aarch64-linux = { # ll-nixos-headless-pi-sdcard = nixos-generators.nixosGenerate { # system = "aarch64-linux"; # format = "sd-aarch64"; # modules = pi_modules ++ [ # { networking.hostName = "ll-nixos-headless-pi"; } # ./systems/ll-nixos-headless.nix # lix-module.nixosModules.default # home-manager.nixosModules.home-manager # ]; # specialArgs = { inherit inputs pkgs-unstable; }; # }; # token-pi-sdcard = nixos-generators.nixosGenerate { # system = "aarch64-linux"; # format = "sd-aarch64"; # modules = pi_modules ++ [ # { networking.hostName = "token-pi"; } # ./systems/ll-nixos-headless.nix # lix-module.nixosModules.default # home-manager.nixosModules.home-manager # ]; # specialArgs = { inherit inputs pkgs-unstable; }; # }; # outpost-sdcard = nixos-generators.nixosGenerate { # system = "aarch64-linux"; # format = "sd-aarch64"; # modules = pi_modules ++ [ # ./systems/outpost.nix # lix-module.nixosModules.default # home-manager.nixosModules.home-manager # ]; # specialArgs = { inherit inputs pkgs-unstable; }; # }; #}; packages.x86_64-linux = { ########################################################################## ########################################################################## ########################################################################## # Personal Live Disks # TODO: ll-nixos-headless-iso = nixos-generators.nixosGenerate {}; #ll-nixos-base-iso = nixos-generators.nixosGenerate { # system = "x86_64-linux"; # modules = [ # { # networking.hostName = "ll-nixos"; # home-manager.users."lauren_lagarde" = { # nixpkgs.config.allowUnfree = true; # imports = inputs.mlaga97-home-manager.homeManagerModules."lauren_lagarde@ll-latitude-e5591"; # }; # } # ./systems/ll-nixos-base.nix # lix-module.nixosModules.default # home-manager.nixosModules.home-manager # ]; # specialArgs = { # inherit inputs pkgs-unstable; # }; # format = "install-iso"; #}; #ll-nixos-full-iso = nixos-generators.nixosGenerate { # system = "x86_64-linux"; # modules = [ # { # networking.hostName = "ll-nixos"; # home-manager.users."lauren_lagarde" = { config, ... }: { # nixpkgs.config.allowUnfree = true; # imports = inputs.mlaga97-home-manager.homeManagerModules."lauren_lagarde@ll-latitude-e5591"; # }; # } # ./systems/ll-nixos-full.nix # lix-module.nixosModules.default # home-manager.nixosModules.home-manager # waveforms.nixosModule # disko.nixosModules.default # ]; # specialArgs = { # inherit inputs pkgs-unstable; # }; # format = "install-iso"; #}; #ll-nixos-xmrig-worker-iso = nixos-generators.nixosGenerate { # system = "x86_64-linux"; # modules = [ # { networking.hostName = "ll-nixos-xmrig-worker"; } # ./systems/ll-nixos-xmrig-worker.nix # lix-module.nixosModules.default # home-manager.nixosModules.home-manager # ]; # format = "install-iso"; #}; ########################################################################## ########################################################################## ########################################################################## # Systems #living-room-nixos-iso = nixos-generators.nixosGenerate { # system = "x86_64-linux"; # modules = [ # { networking.hostName = "living-room-nixos-iso"; } # ./systems/living-room-nixos.nix # lix-module.nixosModules.default # home-manager.nixosModules.home-manager # ]; # format = "install-iso"; # specialArgs = { inherit inputs pkgs-unstable; }; #}; #default = self.packages.x86_64-linux.ll-nixos-full-iso; }; }; }