dotfiles/flake.nix

297 lines
8.6 KiB
Nix
Raw Normal View History

2022-04-27 01:36:16 +00:00
{
description = "My system";
2022-05-08 20:02:13 +00:00
# Other flakes that we want to pull from
2022-04-27 01:36:16 +00:00
inputs = {
2022-05-08 20:02:13 +00:00
# Used for system packages
2022-04-27 01:36:16 +00:00
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
2022-05-08 20:02:13 +00:00
2022-06-12 21:46:26 +00:00
# Used for MacOS system config
darwin = {
url = "github:/lnl7/nix-darwin/master";
inputs.nixpkgs.follows = "nixpkgs";
};
2022-07-08 01:31:00 +00:00
# Used for Windows Subsystem for Linux compatibility
wsl.url = "github:nix-community/NixOS-WSL";
2022-05-08 20:02:13 +00:00
# Used for user packages
2022-04-27 01:36:16 +00:00
home-manager = {
url = "github:nix-community/home-manager/master";
2022-05-08 20:02:13 +00:00
inputs.nixpkgs.follows =
"nixpkgs"; # Use system packages list where available
2022-04-27 01:36:16 +00:00
};
2022-05-08 20:02:13 +00:00
# Community packages; used for Firefox extensions
2022-05-07 18:24:00 +00:00
nur.url = "github:nix-community/nur";
2022-04-27 01:36:16 +00:00
# Use official Firefox binary for macOS
firefox-darwin.url = "github:bandithedoge/nixpkgs-firefox-darwin";
# Wallpapers
wallpapers = {
url = "gitlab:exorcist365/wallpapers";
flake = false;
};
2022-09-20 04:01:45 +00:00
# Used to generate NixOS images for other platforms
nixos-generators = {
url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs";
};
2022-11-27 19:29:45 +00:00
# Convert Nix to Neovim config
nix2vim = {
url = "github:gytis-ivaskevicius/nix2vim";
inputs.nixpkgs.follows = "nixpkgs";
};
# Nix language server
nil.url = "github:oxalica/nil";
# Neovim plugins
nvim-lspconfig-src = {
url = "github:neovim/nvim-lspconfig";
flake = false;
};
cmp-nvim-lsp-src = {
url = "github:hrsh7th/cmp-nvim-lsp";
flake = false;
};
cmp-buffer-src = {
url = "github:hrsh7th/cmp-buffer";
flake = false;
};
plenary-nvim-src = {
url = "github:nvim-lua/plenary.nvim";
flake = false;
};
null-ls-nvim-src = {
url = "github:jose-elias-alvarez/null-ls.nvim";
flake = false;
};
vim-surround-src = {
url = "github:tpope/vim-surround";
flake = false;
};
vim-repeat-src = {
url = "github:tpope/vim-repeat";
flake = false;
};
Comment-nvim-src = {
url = "github:numToStr/Comment.nvim";
flake = false;
};
impatient-nvim-src = {
url = "github:lewis6991/impatient.nvim";
flake = false;
};
nvim-treesitter-src = {
url = "github:nvim-treesitter/nvim-treesitter";
flake = false;
};
telescope-nvim-src = {
url = "github:nvim-telescope/telescope.nvim";
flake = false;
};
telescope-project-nvim-src = {
url = "github:nvim-telescope/telescope-project.nvim";
flake = false;
};
toggleterm-nvim-src = {
url = "github:akinsho/toggleterm.nvim";
flake = false;
};
gitsigns-nvim-src = {
url = "github:lewis6991/gitsigns.nvim";
flake = false;
};
lualine-nvim-src = {
url = "github:hoob3rt/lualine.nvim";
flake = false;
};
nvim-web-devicons-src = {
url = "github:kyazdani42/nvim-web-devicons";
flake = false;
};
bufferline-nvim-src = {
url = "github:akinsho/bufferline.nvim";
flake = false;
};
vim-bbye-src = {
url = "github:moll/vim-bbye";
flake = false;
};
nvim-tree-lua-src = {
url = "github:kyazdani42/nvim-tree.lua";
flake = false;
};
2022-04-27 01:36:16 +00:00
};
2022-09-20 04:01:45 +00:00
outputs = { self, nixpkgs, ... }@inputs:
2022-05-16 00:46:17 +00:00
2022-04-27 01:36:16 +00:00
let
2022-05-08 20:02:13 +00:00
# Global configuration for my systems
2022-09-10 02:16:45 +00:00
globals = rec {
2022-04-30 16:07:58 +00:00
user = "noah";
fullName = "Noah Masur";
2022-09-10 02:16:45 +00:00
gitName = fullName;
2022-04-30 16:07:58 +00:00
gitEmail = "7386960+nmasur@users.noreply.github.com";
2022-05-11 03:45:50 +00:00
mailServer = "noahmasur.com";
2022-10-01 18:28:03 +00:00
dotfilesRepo = "git@github.com:nmasur/dotfiles";
2022-04-29 00:54:37 +00:00
};
2022-05-08 20:02:13 +00:00
2022-05-16 00:46:17 +00:00
# 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 rec {
2022-05-08 20:02:13 +00:00
nixosConfigurations = {
desktop = import ./hosts/desktop { inherit inputs globals; };
wsl = import ./hosts/wsl { inherit inputs globals; };
oracle = import ./hosts/oracle { inherit inputs globals; };
2022-04-27 01:36:16 +00:00
};
2022-05-08 20:02:13 +00:00
darwinConfigurations = {
macbook = import ./hosts/macbook { inherit inputs globals; };
};
# For quickly applying local settings with:
# home-manager switch --flake .#desktop
homeConfigurations = {
desktop =
nixosConfigurations.desktop.config.home-manager.users.${globals.user}.home;
macbook =
darwinConfigurations.macbook.config.home-manager.users."Noah.Masur".home;
2022-06-12 21:46:26 +00:00
};
2022-10-18 12:21:22 +00:00
# Package servers into images with a generator
2022-11-27 19:29:45 +00:00
packages = forAllSystems (system: {
aws = {
2022-11-19 03:35:00 +00:00
"${system}" = import ./hosts/aws { inherit inputs globals system; };
2022-11-27 19:29:45 +00:00
};
neovim = let
pkgs = import nixpkgs {
inherit system;
overlays = [
(import ./modules/neovim/plugins-overlay.nix inputs)
inputs.nix2vim.overlay
];
};
2022-11-27 20:08:33 +00:00
in pkgs.neovimBuilder {
package = pkgs.neovim-unwrapped;
imports = [
./modules/neovim/plugins/gitsigns.nix
./modules/neovim/plugins/misc.nix
# ({ pkgs, dsl, ... }:
# # with dsl;
# {
# plugins = [ pkgs.vimPlugins.gitsigns-nvim ];
# setup.gitsigns = { };
# lua = ''
# vim.keymap.set("", "<Space>", "<Nop>", { silent = true })
# vim.g.mapleader = " "
# vim.g.maplocalleader = " "
# local gitsigns = require("gitsigns")
# vim.keymap.set("n", "<Leader>gB", gitsigns.blame_line)
# vim.keymap.set("n", "<Leader>gp", gitsigns.preview_hunk)
# vim.keymap.set("v", "<Leader>gp", gitsigns.preview_hunk)
# vim.keymap.set("n", "<Leader>gd", gitsigns.diffthis)
# vim.keymap.set("v", "<Leader>gd", gitsigns.diffthis)
# vim.keymap.set("n", "<Leader>rgf", gitsigns.reset_buffer)
# vim.keymap.set("v", "<Leader>hs", gitsigns.stage_hunk)
# vim.keymap.set("v", "<Leader>hr", gitsigns.reset_hunk)
# vim.keymap.set("v", "<Leader>hr", gitsigns.reset_hunk)
#
# -- Navigation
# vim.keymap.set("n", "]g", function()
# if vim.wo.diff then
# return "]g"
# end
# vim.schedule(function()
# gitsigns.next_hunk()
# end)
# return "<Ignore>"
# end, { expr = true })
#
# vim.keymap.set("n", "[g", function()
# if vim.wo.diff then
# return "[g"
# end
# vim.schedule(function()
# gitsigns.prev_hunk()
# end)
# return "<Ignore>"
# end, { expr = true })
# '';
# })
];
};
2022-11-27 19:29:45 +00:00
});
2022-10-18 12:21:22 +00:00
2022-06-05 13:24:46 +00:00
apps = forAllSystems (system:
let pkgs = import nixpkgs { inherit system; };
in import ./apps { inherit pkgs; });
2022-06-05 13:24:46 +00:00
2022-05-16 00:46:17 +00:00
devShells = forAllSystems (system:
let pkgs = import nixpkgs { inherit system; };
2022-05-01 15:16:48 +00:00
in {
2022-08-21 21:27:47 +00:00
# Used to run commands and edit files in this repo
2022-05-01 15:16:48 +00:00
default = pkgs.mkShell {
2022-05-06 12:58:44 +00:00
buildInputs = with pkgs; [ git stylua nixfmt shfmt shellcheck ];
2022-05-01 15:16:48 +00:00
};
2022-08-21 21:27:47 +00:00
# Used for cloud and systems development and administration
2022-08-20 01:10:08 +00:00
devops = pkgs.mkShell {
buildInputs = with pkgs; [
git
terraform
consul
vault
awscli2
google-cloud-sdk
2022-09-21 20:58:04 +00:00
ansible
2022-09-10 20:14:30 +00:00
kubectl
kubernetes-helm
2022-08-20 01:10:08 +00:00
kustomize
fluxcd
];
};
2022-08-21 21:27:47 +00:00
2022-05-16 00:46:17 +00:00
});
2022-04-27 13:23:26 +00:00
2022-06-21 03:34:24 +00:00
# Templates for starting other projects quickly
2022-08-08 00:37:19 +00:00
templates = rec {
default = basic;
2022-08-07 18:52:00 +00:00
basic = {
path = ./templates/basic;
description = "Basic program template";
};
2022-06-21 03:34:24 +00:00
poetry = {
path = ./templates/poetry;
description = "Poetry template";
};
python = {
path = ./templates/python;
description = "Legacy Python template";
};
2022-07-04 23:17:58 +00:00
haskell = {
path = ./templates/haskell;
description = "Haskell template";
};
2022-06-21 03:34:24 +00:00
};
2022-04-27 01:36:16 +00:00
};
}