-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
77 lines (72 loc) · 2.28 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
{
description = "NixOS configuration";
# use a released version
inputs = {
nixpkgs.url = "nixpkgs/nixos-24.05";
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
lanzaboote = {
url = "github:nix-community/lanzaboote";
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
# only needed if you use as a package set:
nixpkgs-wayland.inputs.nixpkgs.follows = "nixpkgs-unstable";
};
outputs = { self, nixpkgs, nixos-hardware, nixpkgs-unstable, lanzaboote, ... }@attrs:
let
system = "x86_64-linux";
overlay-unstable-with-sway = final: prev: {
unstable = import nixpkgs-unstable {
system = "${prev.system}";
config.allowUnfreePredicate = pkg: builtins.elem (pkg.pname or (builtins.parseDrvName pkg.name).name) final.allowedUnfree;
# overlay for using unstable-sway in sway-and-friends
overlays = [ attrs.nixpkgs-wayland.overlay ];
};
};
mkSystem = { name, userFacing, modules ? [], extra ? {} }: nixpkgs.lib.nixosSystem {
inherit system;
modules = [
./modules/utils/allowedUnfree-polyfill.nix
./modules/common/boot.nix
./modules/common/base.nix
./modules/common/users.nix
./systems/${name}/configuration.nix
./systems/${name}/hardware.nix
] ++ modules ++ nixpkgs.lib.optionals (userFacing) [
# make pkgs.unstable available in modules
({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable-with-sway ]; })
./modules/user-facing/boot.nix
./modules/user-facing/home-manager-systems.nix
./modules/user-facing/sway-and-friends.nix
./modules/user-facing/common-system-apps.nix
];
} // extra;
in rec {
# yasamin
nixosConfigurations.yasamin = mkSystem {
name = "yasamin";
userFacing = true;
modules = [
nixos-hardware.nixosModules.lenovo-thinkpad-x1-9th-gen
];
};
nixosConfigurations.yasamin-print = nixosConfigurations.yasamin // {
modules = nixpkgs.lib.mkAfter [
({ pkgs, ... }: {
services.printing.enable = true;
# enable wifi printing
services.avahi = {
enable = true;
nssmdns = true;
openFirewall = true;
};
})
];
};
# music.devices
nixosConfigurations.music = mkSystem {
name = "music";
userFacing = false;
};
};
}