-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathflake.nix
114 lines (101 loc) · 3.73 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
{
description = "macOS configurations";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-24.11-darwin";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nix-darwin = {
url = "github:LnL7/nix-darwin";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "nixpkgs";
};
zjstatus = {
url = "github:dj95/zjstatus";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
};
outputs = { self, nixpkgs, nixpkgs-unstable, nix-darwin, home-manager, zjstatus }:
let
platforms = [ "x86_64-darwin" "aarch64-darwin" ];
overlay = final: prev: {
unstable = import nixpkgs-unstable {
inherit (prev) system;
config.allowBroken = true;
config.allowUnfree = true;
config.packageOverrides = prev: import ./pkgs { inherit (prev) pkgs; };
config.permittedInsecurePackages = [
"libxls-1.6.2"
];
};
presenterm-with-sixel = with final.unstable.pkgs; presenterm.overrideAttrs (attrs: {
cargoBuildFeatures = attrs.cargoBuildFeatures ++ lib.optional stdenv.isDarwin [ "sixel" ];
# fix for macOS:
# Crashes at runtime on darwin with:
# Library not loaded: .../out/lib/libsixel.1.dylib
#
# The sixel-sys crate used by presenterm is dynamically linked to libsixel.
#
# sources:
# https://github.com/NixOS/nixpkgs/pull/249210/files
# https://github.com/NixOS/nixpkgs/pull/297078/files
nativeBuildInputs = attrs.nativeBuildInputs ++ [ makeWrapper ];
postInstall = (attrs.postInstall or "") + lib.optionalString stdenv.isDarwin ''
wrapProgram $out/bin/presenterm \
--prefix DYLD_LIBRARY_PATH : "${lib.makeLibraryPath [ libsixel ]}"
'';
});
zjstatus = zjstatus.packages.${prev.system}.default;
};
# makes "pkgs.unstable" available in configuration.nix
overlayModule = ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay ]; });
user = rec {
fullName = "Franck Rasolo";
accountName = "franck.rasolo";
homeDirectory = "/Users/${accountName}";
};
forAllSystems = f: nixpkgs.lib.genAttrs platforms (system: f {
pkgs = import nixpkgs { inherit system; };
});
in
{
darwinConfigurations = {
mbp64 = nix-darwin.lib.darwinSystem {
system = "x86_64-darwin";
inputs = { inherit nix-darwin nixpkgs; };
modules = [
overlayModule
./darwin/configuration.nix
home-manager.darwinModules.home-manager
];
specialArgs = { inherit user; };
};
m3max = nix-darwin.lib.darwinSystem {
system = "aarch64-darwin";
inputs = { inherit nix-darwin nixpkgs; };
modules = [
{ nix.extraOptions = ''extra-platforms = aarch64-darwin x86_64-darwin''; }
overlayModule
./darwin/configuration.nix
home-manager.darwinModules.home-manager {
home-manager.extraSpecialArgs = { inherit user; };
}
];
specialArgs = { inherit user; };
};
};
checks = {
x86_64-darwin.mbp64 = self.nix-darwin-configurations.mbp64.system;
aarch64-darwin.m3max = self.nix-darwin-configurations.m3max.system;
};
devShells = forAllSystems ({ pkgs }: with pkgs; {
default = mkShell {
shellHook = ''
# health checks for Nix flake inputs
nix run "github:DeterminateSystems/flake-checker"
'';
};
});
};
}