-
Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathflake.nix
136 lines (115 loc) · 3.79 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
{
description = "Constellation";
inputs = {
nixpkgs = {
url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
flake-utils = {
url = "github:numtide/flake-utils";
};
};
outputs =
{
self,
nixpkgs,
flake-utils,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
overlay = final: prev: {
rpm = prev.rpm.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ prev.makeWrapper ];
postFixup = ''
wrapProgram $out/lib/rpm/sysusers.sh \
--set PATH ${
prev.lib.makeBinPath (
with prev;
[
coreutils
findutils
su.out
gnugrep
]
)
}
'';
});
# dnf5 assumes a TTY with a very small width by default, truncating its output instead of line-wrapping
# it. Force it to use more VT columns to avoid this, and make debugging errors easier.
dnf5-stub = prev.writeScriptBin "dnf5" ''
#!/usr/bin/env bash
FORCE_COLUMNS=200 ${final.dnf5}/bin/dnf5 $@
'';
};
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [
(_final: prev: (import ./nix/packages { inherit (prev) lib callPackage; }))
(_final: prev: { lib = prev.lib // (import ./nix/lib { inherit (prev) lib callPackage; }); })
overlay
];
};
callPackage = pkgs.callPackage;
mkosiDev = (
pkgs.mkosi.override {
extraDeps = (
with pkgs;
[
# package management
dnf5-stub
rpm
createrepo_c
# filesystem tools
squashfsTools # mksquashfs
dosfstools # mkfs.vfat
mtools # mcopy
cryptsetup # dm-verity
util-linux # flock
kmod # depmod
cpio # cpio
zstd # zstd
xz # xz
# utils
gnused # sed
gnugrep # grep
]
);
}
);
in
{
# Use `legacyPackages` instead of `packages` for the reason explained here:
# https://github.com/NixOS/nixpkgs/blob/34def00657d7c45c51b0762eb5f5309689a909a5/flake.nix#L138-L156
# Note that it's *not* a legacy attribute.
legacyPackages = {
generate = pkgs.callPackage ./nix/generate.nix { };
} // pkgs;
packages.mkosi = mkosiDev;
packages.uplosi = pkgs.uplosi;
packages.openssl = callPackage ./nix/cc/openssl.nix { pkgs = pkgs; };
packages.cryptsetup = callPackage ./nix/cc/cryptsetup.nix {
pkgs = pkgs;
pkgsLinux = import nixpkgs { system = "x86_64-linux"; };
};
packages.libvirt = callPackage ./nix/cc/libvirt.nix {
pkgs = pkgs;
pkgsLinux = import nixpkgs { system = "x86_64-linux"; };
};
packages.libvirtd_base = callPackage ./nix/container/libvirtd_base.nix {
pkgs = pkgs;
pkgsLinux = import nixpkgs { system = "x86_64-linux"; };
};
packages.vpn = callPackage ./nix/container/vpn/vpn.nix {
pkgs = pkgs;
pkgsLinux = import nixpkgs { system = "x86_64-linux"; };
};
packages.awscli2 = pkgs.awscli2;
packages.createrepo_c = pkgs.createrepo_c;
packages.dnf5 = pkgs.dnf5;
devShells.default = callPackage ./nix/shells/default.nix { };
formatter = nixpkgs.legacyPackages.${system}.nixpkgs-fmt;
}
);
}