Skip to content
This repository was archived by the owner on Jan 18, 2025. It is now read-only.

Commit da9094c

Browse files
committed
flake: use flake-utils
Signed-off-by: Sefa Eyeoglu <[email protected]>
1 parent fa732b3 commit da9094c

17 files changed

+178
-103
lines changed

.envrc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
use flake

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -141,3 +141,4 @@ stack.yml
141141
.github/workflows/build_docker.yml
142142

143143
result
144+
.direnv/

development.nix

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
flake-utils,
3+
nixpkgs,
4+
self,
5+
treefmt-nix,
6+
...
7+
}:
8+
flake-utils.lib.eachDefaultSystem (
9+
system:
10+
let
11+
pkgs = nixpkgs.legacyPackages.${system};
12+
inherit (pkgs.lib) mapAttrs' nameValuePair;
13+
14+
treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
15+
16+
devShellChecks = mapAttrs' (n: nameValuePair "devShell-${n}") self.devShells.${system};
17+
in
18+
{
19+
devShells.default = pkgs.mkShell {
20+
inputsFrom = [ self.packages.${system}.default ];
21+
packages = [
22+
pkgs.ruff
23+
];
24+
};
25+
26+
checks = devShellChecks // {
27+
formatting = treefmtEval.config.build.check self;
28+
};
29+
30+
formatter = treefmtEval.config.build.wrapper;
31+
}
32+
)

flake.lock

+43-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

+12-15
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,20 @@
22
description = "Description for the project";
33

44
inputs = {
5-
flake-parts.url = "github:hercules-ci/flake-parts";
65
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6+
flake-utils.url = "github:numtide/flake-utils";
7+
treefmt-nix = {
8+
url = "github:numtide/treefmt-nix";
9+
inputs.nixpkgs.follows = "nixpkgs";
10+
};
711
};
812

913
outputs =
10-
inputs@{ flake-parts, ... }:
11-
flake-parts.lib.mkFlake { inherit inputs; } {
12-
systems = [
13-
"x86_64-linux"
14-
"aarch64-linux"
15-
];
16-
17-
imports = [
18-
./nix/checks
19-
./nix/formatter.nix
20-
./nix/nixosModules
21-
./nix/packages
22-
];
23-
};
14+
{ flake-utils, ... }@inputs:
15+
flake-utils.lib.meld inputs [
16+
./development.nix
17+
./nixos
18+
./pkgs
19+
./pkgs/overlay.nix
20+
];
2421
}

nix/checks/default.nix

-10
This file was deleted.

nix/checks/modmail-module.nix

-36
This file was deleted.

nix/formatter.nix

-7
This file was deleted.

nix/packages/default.nix

-15
This file was deleted.

nixos/checks.nix

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{
2+
flake-utils,
3+
nixpkgs,
4+
self,
5+
...
6+
}:
7+
flake-utils.lib.eachDefaultSystem (
8+
system:
9+
let
10+
pkgs = nixpkgs.legacyPackages.${system};
11+
in
12+
{
13+
checks.modmail-module = pkgs.nixosTest {
14+
name = "modmail-module-test";
15+
16+
nodes.machine =
17+
{ pkgs, ... }:
18+
{
19+
imports = [ self.nixosModules.modmail-with-overlay ];
20+
21+
# TODO: emulate Discord API?
22+
23+
services.ferretdb.enable = true;
24+
25+
services.modmail = {
26+
enable = true;
27+
settings = {
28+
LOG_URL = "https://foo.example.com/";
29+
GUILD_ID = 1234567890;
30+
OWNERS = "98765,43210";
31+
};
32+
33+
environmentFile = toString (
34+
pkgs.writeText "modmail.env" ''
35+
CONNECTION_URI="mongodb://127.0.0.1/ferretdb"
36+
TOKEN=foo
37+
''
38+
);
39+
};
40+
};
41+
42+
testScript = ''
43+
start_all()
44+
machine.wait_for_unit("modmail.service")
45+
machine.succeed("systemctl status modmail.service")
46+
'';
47+
};
48+
}
49+
)

nix/nixosModules/default.nix renamed to nixos/default.nix

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{ self, ... }:
22
{
3-
flake.nixosModules = {
3+
nixosModules = {
44
modmail = ./modmail.nix;
55
modmail-with-overlay = import ./modmail-with-overlay.nix self;
66
};
File renamed without changes.

pkgs/default.nix

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
flake-utils,
3+
nixpkgs,
4+
self,
5+
...
6+
}:
7+
flake-utils.lib.eachDefaultSystem (
8+
system:
9+
let
10+
pkgs = nixpkgs.legacyPackages.${system};
11+
12+
# NOTE: this is not the correct way to apply an overlay!
13+
packages = self.overlays.default pkgs pkgs;
14+
in
15+
{
16+
packages = {
17+
inherit (packages) modmail;
18+
default = packages.modmail;
19+
};
20+
}
21+
)
File renamed without changes.

pkgs/overlay.nix

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{ self, ... }:
2+
{
3+
overlays.default = final: prev: {
4+
modmail = final.python311Packages.callPackage ./modmail { inherit self; };
5+
};
6+
}

treefmt.nix

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# SPDX-FileCopyrightText: 2024 Sefa Eyeoglu <[email protected]>
2+
#
3+
# SPDX-License-Identifier: MIT
4+
{ ... }:
5+
{
6+
projectRootFile = "flake.nix";
7+
8+
programs.actionlint.enable = true;
9+
programs.mdformat.enable = true;
10+
programs.nixfmt.enable = true;
11+
programs.ruff.enable = true;
12+
}

0 commit comments

Comments
 (0)