nix-config/flake.nix

117 lines
3 KiB
Nix
Raw Normal View History

2022-09-26 21:28:35 +01:00
{
2023-07-30 23:01:46 +01:00
inputs = {
2025-07-08 13:45:18 +01:00
agenix.inputs.nixpkgs.follows = "nixpkgs";
2024-12-09 22:35:34 +00:00
agenix.url = "github:ryantm/agenix";
2025-06-01 23:22:09 +01:00
disko.inputs.nixpkgs.follows = "nixpkgs";
disko.url = "github:nix-community/disko";
2025-07-09 00:23:48 +01:00
flake-parts.url = "github:hercules-ci/flake-parts";
2025-06-01 23:22:09 +01:00
home-manager.inputs.nixpkgs.follows = "nixpkgs";
home-manager.url = "github:nix-community/home-manager/master";
2025-03-08 21:00:55 +00:00
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
2025-04-23 17:28:26 +01:00
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
2025-07-09 00:23:48 +01:00
nixvim.inputs.flake-parts.follows = "flake-parts";
2025-06-02 02:09:06 +01:00
nixvim.inputs.nixpkgs.follows = "nixpkgs";
nixvim.url = "github:nix-community/nixvim";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
2025-04-23 17:28:26 +01:00
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
2025-02-13 22:53:24 +00:00
2025-07-08 13:42:12 +01:00
nur.inputs.nixpkgs.follows = "nixpkgs";
2025-02-13 22:53:24 +00:00
nur.url = "github:nix-community/NUR";
2023-07-30 23:01:46 +01:00
};
2022-09-26 21:28:35 +01:00
outputs =
2025-07-09 00:23:48 +01:00
inputs@{
flake-parts,
nixpkgs,
self,
...
}:
flake-parts.lib.mkFlake { inherit inputs; } {
flake =
let
inherit (self) outputs;
specialArgs = {
inherit inputs outputs self;
system = "x86_64-linux";
username = "opdavies";
Refactor NixOS and Home Manager modules This makes them more modular and configurable by allowing features to be enabled per-host. Squashed commit of the following: commit e9896d6166125de7aa26ddc63dac3adb196e8c23 Author: Oliver Davies <oliver@oliverdavies.dev> Date: Mon Nov 25 23:06:23 2024 +0000 Use mkMerge To ensure features isn't overridden and values aren't lost accidentally commit c9c8ff5d059f08ade3aee9bb4e25bd51d4817a6d Author: Oliver Davies <oliver@oliverdavies.dev> Date: Mon Nov 25 22:56:38 2024 +0000 Move NixOS module imports commit 4a85bbac9dfa8f06825f6b1fee45ef27befa16d3 Author: Oliver Davies <oliver@oliverdavies.dev> Date: Mon Nov 25 22:39:54 2024 +0000 Move Home Manager module imports commit 6d7a1b0aac68ccc8649fa2d8cd6e8b17ecebb4f0 Author: Oliver Davies <oliver@oliverdavies.dev> Date: Mon Nov 25 21:15:54 2024 +0000 Add host-specific Home Manager configurations commit b32da2fbf7498c9684d8289be0f02800994e9110 Author: Oliver Davies <oliver@oliverdavies.dev> Date: Mon Nov 25 18:00:00 2024 +0000 Start to parameterise Home Manager modules commit e80e89b415849cc4c6051a07b70587ac98724e2c Author: Oliver Davies <oliver@oliverdavies.dev> Date: Mon Nov 25 18:00:00 2024 +0000 Rename wsl commands to home-manager commit 6d82ed73da3c104fb25117fb843c3f3b5d833180 Author: Oliver Davies <oliver@oliverdavies.dev> Date: Mon Nov 25 18:00:00 2024 +0000 Refactor NixOS Home Manager configuration commit cc5cbf5ac1a407a456d7258dd65a78ba3128a88f Author: Oliver Davies <oliver@oliverdavies.dev> Date: Mon Nov 25 08:05:00 2024 +0000 Refactor WSL Home Manager configuration commit deaf664a0997871b6f2bb0a8f97d638a91cb10bc Author: Oliver Davies <oliver@oliverdavies.dev> Date: Mon Nov 25 08:04:00 2024 +0000 Refactor lemp11 configuration
2024-11-26 08:13:46 +00:00
};
2025-07-09 00:23:48 +01:00
2025-07-09 01:19:25 +01:00
mkNixosConfiguration =
{
hostname,
stateVersion ? "22.11",
system ? "x86_64-linux",
}:
nixpkgs.lib.nixosSystem {
inherit system;
2025-07-09 00:23:48 +01:00
2025-07-09 01:19:25 +01:00
modules = [ ./hosts/${hostname}/configuration.nix ];
2025-07-09 00:23:48 +01:00
specialArgs = specialArgs // {
2025-07-09 01:19:25 +01:00
inherit hostname stateVersion system;
2025-07-09 00:23:48 +01:00
};
};
2025-07-09 01:19:25 +01:00
in
{
homeManagerModules.default = import ./modules/home-manager;
2025-07-09 00:23:48 +01:00
2025-07-09 01:19:25 +01:00
nixosConfigurations = {
lemp11 = mkNixosConfiguration { hostname = "lemp11"; };
2025-07-09 00:23:48 +01:00
2025-07-09 01:19:25 +01:00
nixedo = mkNixosConfiguration {
hostname = "nixedo";
stateVersion = "24.11";
2025-07-09 00:23:48 +01:00
};
2025-07-09 01:19:25 +01:00
t480 = mkNixosConfiguration { hostname = "t480"; };
t490 = mkNixosConfiguration { hostname = "t490"; };
PW05CH3L = mkNixosConfiguration { hostname = "PW05CH3L"; };
2024-12-28 09:26:54 +00:00
};
2025-07-09 00:23:48 +01:00
nixosModules.default = import ./modules/nixos;
2024-12-28 09:26:54 +00:00
2025-07-09 00:23:48 +01:00
overlays = import ./overlays { inherit inputs; };
2025-06-01 15:21:20 +01:00
};
2025-03-21 15:01:39 +00:00
2025-07-09 00:23:48 +01:00
perSystem =
{ pkgs, system, ... }:
let
# TODO: refactor to use inputs' or similar.
nixvim = inputs.nixvim.legacyPackages.${system}.makeNixvimWithModule {
inherit pkgs;
2025-03-21 15:01:39 +00:00
2025-07-09 00:23:48 +01:00
module = import ./modules/home-manager/coding/neovim/config;
};
in
{
devShells.default = pkgs.mkShell {
packages = with pkgs; [
just
lua-language-server
lua54Packages.luacheck
nixd
];
2024-12-19 00:57:38 +00:00
};
2025-07-09 00:23:48 +01:00
formatter = pkgs.nixfmt-rfc-style;
2024-12-23 00:28:59 +00:00
2025-07-09 00:23:48 +01:00
packages = {
inherit nixvim;
2025-06-01 15:21:20 +01:00
2025-07-09 00:23:48 +01:00
default = pkgs.mkShell { buildInputs = with pkgs; [ just ]; };
2024-12-23 00:28:59 +00:00
};
};
2025-07-09 00:23:48 +01:00
systems = [ "x86_64-linux" ];
2022-09-26 21:28:35 +01:00
};
}