-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
94 lines (85 loc) · 2.9 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# https://nixos.wiki/wiki/Flakes
{
description = "System configurations for David Asabina";
inputs = {
nixpkgs = {
url = github:NixOS/nixpkgs/nixos-23.05;
};
nixpkgs-bleeding = {
url = github:NixOS/nixpkgs/master;
};
nixos-hardware = {
url = github:NixOS/nixos-hardware/master;
};
sops-nix = {
url = github:Mic92/sops-nix;
};
devenv.url = github:cachix/devenv/latest;
};
outputs =
{ self
, nixpkgs
, nixpkgs-bleeding
, nixos-hardware
, sops-nix
, devenv
} @ args:
let
# TODO: Use flake-utils to do this well
mkLinuxSystem = { target, module }: nixpkgs.lib.nixosSystem {
#inherit system;
system = "x86_64-linux";
modules = [
./base.nix
(./. + "/targets/${target}/hardware-configuration.nix")
(./. + "/targets/${target}/custom.nix")
module
sops-nix.nixosModules.sops
# NOTE: Define after importing users.nix (because of my-config dep)
({ config, lib, ... }: {
config.networking.hostName = "vidbina-${target}";
})
({ ... }: {
nixpkgs.overlays = [
# https://github.com/NixOS/nixpkgs/issues/97855#issuecomment-1075818028
(self: super: {
my-nixos-option =
let
flake-compact = super.fetchFromGitHub {
owner = "edolstra";
repo = "flake-compat";
rev = "12c64ca55c1014cdc1b16ed5a804aa8576601ff2";
sha256 = "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=";
};
prefix = ''(import ${flake-compact} { src = ~/src/vidbina/nixos-configuration; }).defaultNix.nixosConfigurations.${target}'';
in
super.runCommand "nixos-option" { buildInputs = [ super.makeWrapper ]; } ''
makeWrapper ${super.nixos-option}/bin/nixos-option $out/bin/nixos-option \
--add-flags --config_expr \
--add-flags "\"${prefix}.config\"" \
--add-flags --options_expr \
--add-flags "\"${prefix}.options\""
'';
})
(final: prev: {
bleeding = nixpkgs-bleeding.legacyPackages.${prev.system};
devenv = devenv.packages.${prev.system}.devenv;
})
];
})
];
};
targets = [ "dell-xps-9360" "dell-precision-5560" ];
hardwareModules = with nixos-hardware.nixosModules; {
dell-xps-9360 = dell-xps-13-9360;
dell-precision-5560 = dell-precision-5530;
};
in
{
nixosConfigurations = (nixpkgs.lib.genAttrs targets
(target: mkLinuxSystem {
inherit target;
module = hardwareModules."${target}";
}));
};
}