system/flake.nix
2024-10-14 15:35:04 -07:00

114 lines
3.7 KiB
Nix

{
description = "Launchpad flake";
inputs = {
# Switched to unstable 10/13/24 Generation 109 and below stable
nixpkgs-unstable.url = "github:nixos/nixpkgs?ref=nixos-unstable";
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
legacy.url = "github:NixOS/nixpkgs-channels";
# Home manager
home-manager.url = "github:nix-community/home-manager/release-24.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
base16.url = "github:SenchoPens/base16.nix";
nix-colors.url = "github:misterio77/nix-colors";
tt-schemes = {
url = "github:tinted-theming/schemes";
flake = false;
};
base16-vim = {
url = "github:tinted-theming/base16-vim";
flake = false;
};
# Zen Browser
# zen-browser.url = "github:MarceColl/zen-browser-flake";
zen-browser.url = "github:mastermines1/zen-browser-flake";
# hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
# hyprland.url = "github:hyprwm/Hyprland";
# GnuCobal.url="/home/wayne/Flakes/derivations/GnuCobal/";
# pentablet-flake.url = "/home/wayne/Flakes/derivations/xpen/"; # Replace with actual path or Git URL
# kmonad = {
# url = "git+https://github.com/kmonad/kmonad?submodules=1&dir=nix";
# inputs.nixpkgs.follows = "nixpkgs";
# };
};
outputs = { self, nixpkgs, legacy, home-manager, flake-utils, flake-compat, zen-browser, nix-colors, base16, ... } @ inputs:
let
inherit (self) outputs;
lib = nixpkgs.lib; # Import lib here explicitly from nixpkgs
systems = [
"aarch64-linux"
"i686-linux"
"x86_64-linux"
"aarch64-darwin"
"x86_64-darwin"
];
systemSettings = {
hostname = "launchpad";
profile = "Professional";
timezone = "America/Los_Angeles";
locale = "en_US.UTF-8";
gpuType = "nvidia";
version = "24.05";
};
userSettings = {
username = "wayne";
name = "wayne";
email = "...";
dotfilesDir = "~/.dotfiles";
term = "tmux";
font = "JetBrainsMono Nerd Font";
# fontPkg = pkgs.nerdfonts;
editor = "lvim"; # Default editor;
spawnEditor = if ((userSettings.editor == "vim") || (userSettings.editor == "nvim") || (userSettings.editor == "lvim") || (userSettings.editor == "nano"))
then "exec " + userSettings.term + " -e " + userSettings.editor
else userSettings.editor;
};
forAllSystems = nixpkgs.lib.genAttrs systems;
in {
packages = forAllSystems (system: nixpkgs.legacyPackages.${system});
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
nixosConfigurations = {
launchpad = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs outputs systemSettings userSettings lib ;};
modules = [
# kmonad.nixosModules.default
./configuration.nix
# pentablet-flake.nixosModules.pentablet
];
};
};
homeConfigurations = {
wayne = home-manager.lib.homeManagerConfiguration {
# pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
extraSpecialArgs = {inherit inputs outputs systemSettings userSettings zen-browser nix-colors ;};
modules = [
base16.nixosModule
# set system's scheme to nord by setting `config.scheme`
{ scheme = "${inputs.tt-schemes}/base16/nord.yaml"; }
# import `theming.nix`, we will write it in the next, final, step
# ./theming.nix
./hm/home.nix
];
};
};
};
}