nixos-config/flake.nix

253 lines
7.1 KiB
Nix
Raw Normal View History

2022-01-14 09:19:01 +00:00
rec {
description = "Lotte's NixOS installation";
# Use NixOS unstable
2022-03-05 20:39:49 +00:00
inputs = {
2022-12-13 09:00:47 +00:00
# Sorted by name
2023-01-15 11:12:01 +00:00
attic = {
2023-04-13 11:57:24 +00:00
url = "github:DarkKirb/attic";
2023-01-28 20:44:02 +00:00
inputs.crane.follows = "crane";
inputs.flake-utils.follows = "flake-utils";
2023-01-28 20:48:02 +00:00
inputs.nixpkgs.follows = "nixpkgs-for-crane";
inputs.nixpkgs-stable.follows = "nixpkgs-for-crane";
2023-01-15 11:12:01 +00:00
};
2023-01-13 19:20:47 +00:00
cargo2nix = {
2023-03-11 14:29:32 +00:00
url = "github:DarkKirb/cargo2nix/release-0.11.0";
2023-01-13 19:20:47 +00:00
inputs.flake-utils.follows = "flake-utils";
2023-04-16 07:17:47 +00:00
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-overlay.follows = "rust-overlay";
2023-01-13 19:20:47 +00:00
};
chir-rs = {
url = "github:DarkKirb/chir.rs";
2023-04-16 07:17:47 +00:00
inputs.cargo2nix.follows = "cargo2nix";
2023-01-13 19:20:47 +00:00
inputs.flake-utils.follows = "flake-utils";
2023-04-16 07:17:47 +00:00
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-overlay.follows = "rust-overlay";
2023-01-27 20:57:42 +00:00
};
2023-04-25 18:56:36 +00:00
colorpickle = {
url = "github:AgathaSorceress/colorpickle";
inputs.naersk.follows = "naersk";
inputs.nixpkgs.follows = "nixpkgs";
inputs.utils.follows = "flake-utils";
};
2023-01-28 20:18:18 +00:00
crane = {
url = "github:DarkKirb/crane";
inputs.flake-utils.follows = "flake-utils";
2023-01-28 20:45:39 +00:00
inputs.nixpkgs.follows = "nixpkgs-for-crane";
2023-04-16 07:17:47 +00:00
inputs.rust-overlay.follows = "rust-overlay";
2023-01-28 20:18:18 +00:00
};
2022-12-13 09:00:47 +00:00
dns = {
url = "github:DarkKirb/dns.nix";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
emanote = {
url = "github:EmaApps/emanote";
inputs.flake-parts.follows = "flake-parts";
inputs.haskell-flake.follows = "haskell-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
2022-06-12 15:42:42 +00:00
flake-utils.url = "github:numtide/flake-utils";
2022-12-13 09:00:47 +00:00
haskell-flake.url = "github:srid/haskell-flake";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
hosts-list = {
url = "github:StevenBlack/hosts";
flake = false;
};
2023-04-25 18:56:36 +00:00
naersk = {
url = "github:nix-community/naersk/master";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-04-13 06:57:08 +00:00
nix-neovim = {
url = "github:syberant/nix-neovim";
inputs.nixpkgs.follows = "nixpkgs";
};
2022-12-13 09:00:47 +00:00
nix-packages = {
2023-04-08 14:05:13 +00:00
url = "git+https://git.chir.rs/darkkirb/nix-packages.git?ref=main";
inputs.attic.follows = "attic";
2022-12-13 09:00:47 +00:00
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-05-23 13:34:44 +00:00
nixos-config-for-netboot = {
url = "github:DarkKirb/nixos-config/09d7bc6e18f5570522c1c6ba1c6a9db27f933c7a";
inputs.nixos-config-for-netboot.follows = "nixos-config-for-netboot";
};
2022-06-12 15:42:42 +00:00
nixos-hardware.url = "github:NixOS/nixos-hardware";
2023-06-06 15:03:05 +00:00
nixpkgs.url = "github:NixOS/nixpkgs";
2023-01-28 20:55:44 +00:00
nixpkgs-for-crane.url = "github:NixOS/nixpkgs/3ae365afb80773c3bb67e52294a82e329a9e5be0";
2022-12-13 09:00:47 +00:00
nur.url = "github:nix-community/NUR";
2023-01-13 19:20:47 +00:00
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.flake-utils.follows = "flake-utils";
2023-04-16 06:47:38 +00:00
inputs.nixpkgs.follows = "nixpkgs";
2023-01-13 19:20:47 +00:00
};
2022-12-13 09:00:47 +00:00
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs";
};
tomlplusplus = {
url = "github:marzer/tomlplusplus";
flake = false;
};
2022-03-05 20:39:49 +00:00
};
2022-01-14 09:19:01 +00:00
2022-06-12 15:39:15 +00:00
outputs = {
self,
nixpkgs,
sops-nix,
home-manager,
nur,
...
} @ args: let
systems = [
{
name = "nixos-8gb-fsn1-1"; # Hetzner Server
system = "x86_64-linux";
}
{
name = "nutty-noon"; # PC
system = "x86_64-linux";
}
{
name = "thinkrac"; # Thinkpad T470
system = "x86_64-linux";
}
{
name = "nas"; # My nas
system = "x86_64-linux";
}
2023-03-18 09:11:05 +00:00
{
name = "installer"; # Installer iso
system = "x86_64-linux";
}
{
name = "netboot"; # Installer netboot
system = "x86_64-linux";
}
{
name = "instance-20221213-1915"; # Oracle server
system = "aarch64-linux";
}
2022-06-12 15:39:15 +00:00
];
in rec {
nixosConfigurations = builtins.listToAttrs (map
({
name,
system,
configName ? name,
2022-06-12 15:39:15 +00:00
}: {
inherit name;
value =
nixpkgs.lib.nixosSystem
{
inherit system;
specialArgs =
args
// {
2022-02-08 21:01:33 +00:00
inherit system;
2022-06-12 15:39:15 +00:00
};
modules = [
(./config + "/${configName}.nix")
2022-06-12 15:39:15 +00:00
./config/default.nix
sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager
({pkgs, ...}: {
nixpkgs.overlays = [
nur.overlay
];
2022-07-06 18:25:34 +00:00
home-manager.extraSpecialArgs = args // {inherit system;};
2022-06-12 15:39:15 +00:00
})
(import utils/link-input.nix args)
];
};
})
systems);
2022-12-18 12:15:23 +00:00
overlays = {
x86_64-linux = import ./overlays args "x86_64-linux";
aarch64-linux = import ./overlays args "aarch64-linux";
};
2022-06-12 15:39:15 +00:00
devShell.x86_64-linux = let
2022-12-18 12:15:23 +00:00
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [self.overlays.x86_64-linux];
};
2022-06-12 15:39:15 +00:00
in
pkgs.mkShell {
nativeBuildInputs = with pkgs; [
sops
ssh-to-age
nix-prefetch
nix-prefetch-git
jq
bundix
python3
python3Packages.yapf
github-cli
2022-06-12 15:42:42 +00:00
statix
2022-06-23 06:35:05 +00:00
backblaze-b2
2022-06-12 15:39:15 +00:00
];
};
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra;
2023-04-13 06:57:08 +00:00
packages.x86_64-linux = let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [self.overlays.x86_64-linux];
2023-04-13 18:35:12 +00:00
config.allowUnfree = true;
2023-04-13 06:57:08 +00:00
};
in {
neovim-base = args.nix-neovim.buildNeovim {
inherit pkgs;
configuration = import ./config/programs/vim/configuration.nix false;
};
neovim = args.nix-neovim.buildNeovim {
inherit pkgs;
configuration = import ./config/programs/vim/configuration.nix true;
};
};
packages.aarch64-linux = let
pkgs = import nixpkgs {
system = "aarch64-linux";
overlays = [self.overlays.aarch64-linux];
2023-04-13 18:35:12 +00:00
config.allowUnfree = true;
2023-04-13 06:57:08 +00:00
};
in {
neovim-base = args.nix-neovim.buildNeovim {
inherit pkgs;
configuration = import ./config/programs/vim/configuration.nix false;
};
neovim = args.nix-neovim.buildNeovim {
inherit pkgs;
configuration = import ./config/programs/vim/configuration.nix true;
};
};
2022-06-12 15:39:15 +00:00
hydraJobs =
(builtins.listToAttrs (map
({
name,
system,
...
2022-06-12 15:39:15 +00:00
}: {
inherit name;
value = {
${system} = nixosConfigurations.${name}.config.system.build.toplevel;
};
2022-01-14 09:19:01 +00:00
})
2022-06-12 15:39:15 +00:00
systems))
// {
2022-06-12 15:42:42 +00:00
inherit devShell;
2023-04-13 06:57:08 +00:00
inherit packages;
# Uncomment the line to build an installer image
# This is EXTREMELY LARGE and will make builds take forever
# installer.x86_64-linux = nixosConfigurations.installer.config.system.build.isoImage;
2022-04-16 11:02:32 +00:00
};
2022-06-12 15:39:15 +00:00
};
2022-01-14 09:19:01 +00:00
}