{ description = "My NixOS configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nur.url = "github:nix-community/NUR"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; stylix.url = "github:pizzapim/stylix/release-24.05"; treefmt-nix.url = "github:numtide/treefmt-nix"; nix-index-database = { url = "github:nix-community/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager?ref=release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-artwork = { type = "git"; url = "https://github.com/NixOS/nixos-artwork.git"; flake = false; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; # nixpkgs-cosmic.follows = "nixos-cosmic/nixpkgs-stable"; nixos-cosmic = { url = "github:lilyinstarlight/nixos-cosmic"; inputs.nixpkgs-stable.follows = "nixpkgs"; }; }; outputs = { self , nixpkgs , ... }@inputs: let supportedSystems = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; forAllSystems' = nixpkgs.lib.genAttrs; forAllSystems = forAllSystems' supportedSystems; pkgsForSystem = system: import nixpkgs { inherit system; }; treefmtEval = forAllSystems ( system: inputs.treefmt-nix.lib.evalModule (pkgsForSystem system) ./treefmt.nix ); mkNixosSystem = {extraModule, nixpkgs' ? nixpkgs, useDefaultConfiguration ? true}: nixpkgs'.lib.nixosSystem rec { system = "x86_64-linux"; specialArgs = { inherit inputs system; flake = self; }; modules = [ extraModule ] ++ nixpkgs'.lib.optional useDefaultConfiguration ./nixos; }; in { formatter = forAllSystems (system: (treefmtEval.${system}.config.build.wrapper)); nixosConfigurations = { x260 = mkNixosSystem { extraModule = ({ pkgs, lib, ... }: { imports = [ inputs.nixos-hardware.nixosModules.lenovo-thinkpad-x260 ]; config = { pim.lanzaboote.enable = true; networking.hostName = "x260"; fprintd = { enable = true; tod = { enable = true; driver = pkgs.libfprint-2-tod1-vfs0090; }; }; swapDevices = [{ device = "/dev/disk/by-uuid/6028bf52-404d-4143-9cb0-9b06cd60a373"; }]; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "rtsx_pci_sdmmc" ]; }; }); }; x201 = mkNixosSystem {extraModule = ({ pkgs, lib, ... }: { imports = [ inputs.disko.nixosModules.disko ]; config = { networking.hostName = "x201"; boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "usb_storage" ]; disko.devices = { disk = { sda = { device = "/dev/sda"; type = "disk"; content = { type = "gpt"; partitions = { boot = { size = "1M"; type = "EF02"; # for grub MBR priority = 1; # Needs to be first partition }; pv_os = { size = "100%"; content = { type = "lvm_pv"; vg = "vg_os"; }; }; }; }; }; }; lvm_vg.vg_os = { type = "lvm_vg"; lvs = { swap = { size = "3GB"; content.type = "swap"; }; root = { size = "100%FREE"; content = { type = "filesystem"; format = "ext4"; mountpoint = "/"; mountOptions = [ "defaults" ]; }; }; }; }; }; }; }); }; sue-cosmic = mkNixosSystem { useDefaultConfiguration = false; extraModule = ({ ... }: { imports = [ inputs.nixos-hardware.nixosModules.dell-xps-13-9310 inputs.nixos-cosmic.nixosModules.default ./modules/nixos/lanzaboote.nix ]; config = { nixpkgs.config.allowUnfree = true; nix.settings = { substituters = [ "https://cosmic.cachix.org/" ]; trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ]; }; users = { users.pim = { isNormalUser = true; extraGroups = [ "wheel" "docker" "input" "wireshark" "dialout" ]; }; }; services.desktopManager.cosmic.enable = true; services.displayManager.cosmic-greeter.enable = true; pim.lanzaboote.enable = true; networking.hostName = "xps-9315"; swapDevices = [{ device = "/dev/disk/by-uuid/96a43c35-0174-4e92-81f0-168a5f601f0b"; }]; fileSystems = { "/" = { device = "/dev/disk/by-uuid/31638735-5cc4-4013-8037-17e30edcbb0a"; fsType = "ext4"; }; "/boot" = { device = "/dev/disk/by-uuid/560E-F8A2"; fsType = "vfat"; options = [ "fmask=0022" "dmask=0022" ]; }; }; boot.initrd.luks.devices."luks-8ffd3129-4908-4209-98c4-4eb68a35c494".device = "/dev/disk/by-uuid/8ffd3129-4908-4209-98c4-4eb68a35c494"; boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "nvme" "usb_storage" ]; }; }); }; sue = mkNixosSystem {extraModule = ({ ... }: { imports = [ inputs.nixos-hardware.nixosModules.dell-xps-13-9310 ]; config = { pim.lanzaboote.enable = true; networking.hostName = "xps-9315"; swapDevices = [{ device = "/dev/disk/by-uuid/96a43c35-0174-4e92-81f0-168a5f601f0b"; }]; fileSystems = { "/" = { device = "/dev/disk/by-uuid/31638735-5cc4-4013-8037-17e30edcbb0a"; fsType = "ext4"; }; "/boot" = { device = "/dev/disk/by-uuid/560E-F8A2"; fsType = "vfat"; options = [ "fmask=0022" "dmask=0022" ]; }; }; nix.settings = { substituters = [ "https://cosmic.cachix.org/" ]; trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ]; }; boot.initrd.luks.devices."luks-8ffd3129-4908-4209-98c4-4eb68a35c494".device = "/dev/disk/by-uuid/8ffd3129-4908-4209-98c4-4eb68a35c494"; boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "nvme" "usb_storage" ]; # hardware.ipu6 = { # enable = true; # platform = "ipu6ep"; # }; }; }); }; }; }; }