{ 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 = { 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"]; }; }; }; }; }; }