# 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 ## Build System # sudo rm -rf /etc/nixos/ && sudo cp ./ /etc/nixos/ && sudo nixos-rebuild switch ## Build Iso # nix build -L .#packages.x86_64-linux.ll-nixos-full-iso ## Update Packages # nix flake update ## Clean up nix-store # nix-store --delete ... ## Encrypted Home Directory # https://github.com/nix-community/home-manager/issues/3415 ## Declarative Disk Partioning # https://github.com/nix-community/disko # https://github.com/nix-community/nixos-anywhere-examples/blob/main/configuration.nix { description = "Lauren's System Flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager.url = "github:nix-community/home-manager/release-24.11"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; nixos-generators.url = "github:nix-community/nixos-generators/7c60ba4bc8d6aa2ba3e5b0f6ceb9fc07bc261565"; nixos-generators.inputs.nixpkgs.follows = "nixpkgs"; lix-module.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz"; lix-module.inputs.nixpkgs.follows = "nixpkgs"; # Extras waveforms.url = "github:liff/waveforms-flake"; disko.url = "github:nix-community/disko/v1.11.0"; }; outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, nixos-generators, disko, waveforms, lix-module, ... }@inputs: let system = "x86_64-linux"; timezone = "America/Chicago"; locale = "en_US.UTF-8"; stateVersion = "24.11"; unstable = nixpkgs-unstable.legacyPackages.${system}; iso_modules = [ "${nixpkgs}/nixos/modules/installer/cd-dvd/iso-image.nix" { isoImage.squashfsCompression = "zstd"; } ]; # 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 = [ { time.timeZone = timezone; system.stateVersion = stateVersion; } lix-module.nixosModules.default home-manager.nixosModules.home-manager waveforms.nixosModule disko.nixosModules.default ]; in { nixosConfigurations = { ll-nixos-headless = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = "ll-nixos-headless"; } ./systems/ll-nixos-headless.nix ] ++ inherited_modules; specialArgs = { unstable = unstable; }; }; ll-nixos = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = "ll-nixos"; } ./systems/ll-nixos-full.nix ] ++ inherited_modules; specialArgs = { unstable = unstable; }; }; ll-latitude-e5591 = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = "ll-latitude-e5591"; networking.hostId = "f55542ee"; } ./systems/ll-latitude-e5591.nix ] ++ inherited_modules; specialArgs = { unstable = 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 ] ++ inherited_modules; specialArgs = { unstable = unstable; }; }; # Real Systems bastion-in-training = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./systems/bastion/bastion-in-training.nix ] ++ inherited_modules; }; bastion = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./systems/bastion/bastion-actual.nix ] ++ inherited_modules; }; stronghold = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ { networking.hostName = "stronghold"; networking.hostId = "c581a1cd"; } ./systems/vm-docker-base.nix ] ++ inherited_modules; }; }; 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 ] ++ inherited_modules; specialArgs = { unstable = 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 ] ++ inherited_modules; specialArgs = { unstable = unstable; }; }; }; packages.x86_64-linux = { ########################################################################## ########################################################################## ########################################################################## # Personal Live Disks ll-nixos-headless-iso = nixos-generators.nixosGenerate { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = "ll-nixos-headless"; } ./systems/ll-nixos-headless.nix ] ++ inherited_modules; format = "install-iso"; specialArgs = { unstable = unstable; }; }; ll-nixos-base-iso = nixos-generators.nixosGenerate { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = "ll-nixos-base"; } ./systems/ll-nixos-base.nix ] ++ inherited_modules; format = "install-iso"; specialArgs = { unstable = unstable; }; }; ll-nixos-full-iso = nixos-generators.nixosGenerate { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = "ll-nixos"; } ./systems/ll-nixos-full.nix ] ++ inherited_modules; format = "install-iso"; specialArgs = { unstable = unstable; }; }; ll-latitude-e5591-iso = nixos-generators.nixosGenerate { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = "ll-latitude-e5591"; } ./systems/ll-latitude-e5591.nix ] ++ inherited_modules; format = "install-iso"; specialArgs = { unstable = unstable; }; }; ########################################################################## ########################################################################## ########################################################################## # Systems ll-nixos-factorio-iso = nixos-generators.nixosGenerate { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = "ll-nixos-factorio"; } ./systems/ll-nixos-factorio.nix ] ++ inherited_modules; format = "install-iso"; specialArgs = { unstable = unstable; }; }; vm-docker-dhcp-iso = nixos-generators.nixosGenerate { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = ""; } ./systems/vm-docker-dhcp.nix ] ++ inherited_modules; format = "install-iso"; specialArgs = { unstable = unstable; }; }; living-room-nixos-iso = nixos-generators.nixosGenerate { system = "x86_64-linux"; modules = iso_modules ++ [ { networking.hostName = "living-room-nixos-iso"; } ./systems/ll-nixos-full.nix ] ++ inherited_modules; format = "install-iso"; specialArgs = { unstable = unstable; }; }; default = self.packages.x86_64-linux.ll-nixos-full-iso; }; }; }