{ description = "My system"; # Other flakes that we want to pull from inputs = { # Used for system packages nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # Used for user packages home-manager = { url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; # Use system packages list where available }; # Community packages; used for Firefox extensions nur.url = "github:nix-community/nur"; }; outputs = { self, nixpkgs, home-manager, nur }: let # Global configuration for my systems globals = { user = "noah"; fullName = "Noah Masur"; passwordHash = "$6$PZYiMGmJIIHAepTM$Wx5EqTQ5GApzXx58nvi8azh16pdxrN6Qrv1wunDlzveOgawitWzcIxuj76X9V868fsPi/NOIEO8yVXqwzS9UF."; gitEmail = "7386960+nmasur@users.noreply.github.com"; mailServer = "noahmasur.com"; gui = { colorscheme = (import ./modules/colorscheme/gruvbox); wallpaper = ./media/wallpaper/road.jpg; gtk.theme = { name = "Adwaita-dark"; }; }; }; # System types to support. supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; # Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'. forAllSystems = nixpkgs.lib.genAttrs supportedSystems; in { # Define my systems # You can load it from an empty system with: # nix-shell -p nixFlakes # sudo nixos-rebuild switch --flake github:nmasur/dotfiles#desktop nixosConfigurations = { desktop = import ./hosts/desktop { inherit nixpkgs home-manager nur globals; }; }; # Used to run commands and edit files in this repo devShells = forAllSystems (system: let pkgs = import nixpkgs { inherit system; }; in { default = pkgs.mkShell { buildInputs = with pkgs; [ git stylua nixfmt shfmt shellcheck ]; }; }); }; }