flake: refactor a little bit and add treefmt

flake.lock updates:
• Updated input 'catppuccin':
'github:catppuccin/nix/89bbaf1987e8e0e2c891463ebb5be3a6cbd781a1?narHash=sha256-CeTokGIJpTd8kfaqLy3ururMe4N%2BLZpF62ofXAh0KtU%3D' (2025-01-04)
→ 'github:catppuccin/nix/8eada392fd6571a747e1c5fc358dd61c14c8704e?narHash=sha256-76MaB3COao55nlhWmSmq9PKgu2iGIs54C1cAE0E5J6Y%3D' (2025-01-05)
• Updated input 'ghostty':
'github:ghostty-org/ghostty/0306c592a7dbaa394da481ab2219b3bcd2b8b48f?narHash=sha256-jKWHpdlWyN8fa/1MvSRX2qVf%2BZBJLu8NsH7T9xK4WRo%3D' (2025-01-04)
→ 'github:ghostty-org/ghostty/918ccdba5cc65ccd1fb48a54c71306d869299441?narHash=sha256-r%2BFXWU/hfgO3lAHYs9Q03iCShnC42mZd1pnmIIp8Z9k%3D' (2025-01-11)
• Updated input 'home-manager':
'github:nix-community/home-manager/0d7908bd09165db6699908b7e3970f137327cbf0?narHash=sha256-P4lsS2Y5GzBfC8OfXtD/xWEucX6oHGTjOzjEjEJbXfc%3D' (2025-01-04)
→ 'github:nix-community/home-manager/2532b500c3ed2b8940e831039dcec5a5ea093afc?narHash=sha256-ZOaGwa%2BWnB7Zn3YXimqjmIugAnHePdXCmNu%2BAHkq808%3D' (2025-01-10)
• Updated input 'mystia':
'github:soopyc/mystia/87fcf4041dcb362f3074f7675b5b5f9f2bcdc1fd?narHash=sha256-YCV7J8mo7OXgUSMhNJwvq7u2Ka8LRo7sLaQQi5RHV30%3D' (2024-12-30)
→ 'github:soopyc/mystia/985a304a40a276eb8576cf8675688a66915a8601?narHash=sha256-Cfm3/eukeXSE5IZ6ap0S7oFzcxJPBdkXxsoDmsalEhE%3D' (2025-01-10)
• Updated input 'mystia/nixpkgs':
'github:NixOS/nixpkgs/88195a94f390381c6afcdaa933c2f6ff93959cb4?narHash=sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs%3D' (2024-12-29)
→ 'github:NixOS/nixpkgs/bffc22eb12172e6db3c5dde9e3e5628f8e3e7912?narHash=sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc%2Bc2c%3D' (2025-01-08)
• Updated input 'nix-index-database':
'github:nix-community/nix-index-database/55ab1e1df5daf2476e6b826b69a82862dcbd7544?narHash=sha256-AydPpRBh8%2BNOkrLylG7vTsHrGO2b5L7XkMEL5HlzcA8%3D' (2024-12-29)
→ 'github:nix-community/nix-index-database/a2200b499efa01ca8646173e94cdfcc93188f2b8?narHash=sha256-QJgTI//KEGuEJC6FDxuI9Dq8PewIpnxD2NVx2/OHbfc%3D' (2025-01-09)
• Updated input 'nixpkgs':
'github:NixOS/nixpkgs/14c58c5918427906794936529c88a00b0d0e483f?narHash=sha256-Mi8oC22DXsgX/Tdwb8mbXrxaG7wdZXP9d3TqCtWvmGI%3D' (2025-01-04)
→ 'github:NixOS/nixpkgs/cef47c71b16e96b15ef2ee88be39d030f1961437?narHash=sha256-%2BJU6o3GAOWtFfmbf1yfHI7Tu8E%2Bsn8Uo6/0argLzsB4%3D' (2025-01-11)
• Updated input 'sops-nix':
'github:Mic92/sops-nix/24d89184adf76d7ccc99e659dc5f3838efb5ee32?narHash=sha256-CIRlqX9tBK2awJkmVu2cKuap/0QziDXStQZ/u/%2Be8Z4%3D' (2025-01-02)
→ 'github:Mic92/sops-nix/f214c1b76c347a4e9c8fb68c73d4293a6820d125?narHash=sha256-4P99yL8vGehwzytkpP87eklBePt6aqeEC5JFsIzhfUs%3D' (2025-01-10)
• Added input 'treefmt-nix':
'github:numtide/treefmt-nix/13c913f5deb3a5c08bb810efd89dc8cb24dd968b?narHash=sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw%3D' (2025-01-06)
• Added input 'treefmt-nix/nixpkgs':
follows 'nixpkgs'

+46 -25
flake.lock
···
"nuscht-search": "nuscht-search"
},
"locked": {
-
"lastModified": 1736033375,
-
"narHash": "sha256-CeTokGIJpTd8kfaqLy3ururMe4N+LZpF62ofXAh0KtU=",
+
"lastModified": 1736069220,
+
"narHash": "sha256-76MaB3COao55nlhWmSmq9PKgu2iGIs54C1cAE0E5J6Y=",
"owner": "catppuccin",
"repo": "nix",
-
"rev": "89bbaf1987e8e0e2c891463ebb5be3a6cbd781a1",
+
"rev": "8eada392fd6571a747e1c5fc358dd61c14c8704e",
"type": "github"
},
"original": {
···
"zig": "zig"
},
"locked": {
-
"lastModified": 1736031329,
-
"narHash": "sha256-jKWHpdlWyN8fa/1MvSRX2qVf+ZBJLu8NsH7T9xK4WRo=",
+
"lastModified": 1736566108,
+
"narHash": "sha256-r+FXWU/hfgO3lAHYs9Q03iCShnC42mZd1pnmIIp8Z9k=",
"owner": "ghostty-org",
"repo": "ghostty",
-
"rev": "0306c592a7dbaa394da481ab2219b3bcd2b8b48f",
+
"rev": "918ccdba5cc65ccd1fb48a54c71306d869299441",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1736013363,
-
"narHash": "sha256-P4lsS2Y5GzBfC8OfXtD/xWEucX6oHGTjOzjEjEJbXfc=",
+
"lastModified": 1736508663,
+
"narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=",
"owner": "nix-community",
"repo": "home-manager",
-
"rev": "0d7908bd09165db6699908b7e3970f137327cbf0",
+
"rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc",
"type": "github"
},
"original": {
···
"nixpkgs": "nixpkgs_3"
},
"locked": {
-
"lastModified": 1735545722,
-
"narHash": "sha256-YCV7J8mo7OXgUSMhNJwvq7u2Ka8LRo7sLaQQi5RHV30=",
+
"lastModified": 1736496128,
+
"narHash": "sha256-Cfm3/eukeXSE5IZ6ap0S7oFzcxJPBdkXxsoDmsalEhE=",
"owner": "soopyc",
"repo": "mystia",
-
"rev": "87fcf4041dcb362f3074f7675b5b5f9f2bcdc1fd",
+
"rev": "985a304a40a276eb8576cf8675688a66915a8601",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1735443188,
-
"narHash": "sha256-AydPpRBh8+NOkrLylG7vTsHrGO2b5L7XkMEL5HlzcA8=",
+
"lastModified": 1736440205,
+
"narHash": "sha256-QJgTI//KEGuEJC6FDxuI9Dq8PewIpnxD2NVx2/OHbfc=",
"owner": "nix-community",
"repo": "nix-index-database",
-
"rev": "55ab1e1df5daf2476e6b826b69a82862dcbd7544",
+
"rev": "a2200b499efa01ca8646173e94cdfcc93188f2b8",
"type": "github"
},
"original": {
···
},
"nixpkgs_3": {
"locked": {
-
"lastModified": 1735471104,
-
"narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=",
+
"lastModified": 1736344531,
+
"narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4",
+
"rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912",
"type": "github"
},
"original": {
···
},
"nixpkgs_4": {
"locked": {
-
"lastModified": 1736019633,
-
"narHash": "sha256-Mi8oC22DXsgX/Tdwb8mbXrxaG7wdZXP9d3TqCtWvmGI=",
+
"lastModified": 1736560554,
+
"narHash": "sha256-+JU6o3GAOWtFfmbf1yfHI7Tu8E+sn8Uo6/0argLzsB4=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "14c58c5918427906794936529c88a00b0d0e483f",
+
"rev": "cef47c71b16e96b15ef2ee88be39d030f1961437",
"type": "github"
},
"original": {
···
"nix-index-database": "nix-index-database",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_4",
-
"sops-nix": "sops-nix"
+
"sops-nix": "sops-nix",
+
"treefmt-nix": "treefmt-nix_2"
}
},
"rust-overlay": {
···
]
},
"locked": {
-
"lastModified": 1735844895,
-
"narHash": "sha256-CIRlqX9tBK2awJkmVu2cKuap/0QziDXStQZ/u/+e8Z4=",
+
"lastModified": 1736515725,
+
"narHash": "sha256-4P99yL8vGehwzytkpP87eklBePt6aqeEC5JFsIzhfUs=",
"owner": "Mic92",
"repo": "sops-nix",
-
"rev": "24d89184adf76d7ccc99e659dc5f3838efb5ee32",
+
"rev": "f214c1b76c347a4e9c8fb68c73d4293a6820d125",
"type": "github"
},
"original": {
···
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "5deb8dc125a9f83b65ca86cf0c8167c46593e0b1",
+
"type": "github"
+
},
+
"original": {
+
"owner": "numtide",
+
"repo": "treefmt-nix",
+
"type": "github"
+
}
+
},
+
"treefmt-nix_2": {
+
"inputs": {
+
"nixpkgs": [
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1736154270,
+
"narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=",
+
"owner": "numtide",
+
"repo": "treefmt-nix",
+
"rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b",
"type": "github"
},
"original": {
+21 -32
flake.nix
···
extra-trusted-public-keys = [
"cache.soopy.moe-1:0RZVsQeR+GOh0VQI9rvnHz55nVXkFardDqfm4+afjPo="
];
-
allow-import-from-derivation = true;
fallback = true;
};
···
catppuccin.url = "github:catppuccin/nix";
hydra.url = "github:NixOS/hydra";
-
ghostty ={
+
ghostty = {
url = "github:ghostty-org/ghostty";
inputs.nixpkgs-unstable.follows = "nixpkgs";
};
···
url = "github:hercules-ci/arion";
inputs.nixpkgs.follows = "nixpkgs";
};
+
+
treefmt-nix = {
+
url = "github:numtide/treefmt-nix";
+
inputs.nixpkgs.follows = "nixpkgs";
+
};
};
-
outputs = {nixpkgs, ...} @ inputs: let
+
outputs = {
+
self,
+
nixpkgs,
+
treefmt-nix,
+
...
+
} @ inputs: let
lib = nixpkgs.lib;
systems = [
···
"x86_64-darwin"
"aarch64-darwin"
];
-
forAllSystems = fn: lib.genAttrs systems (s: fn nixpkgs.legacyPackages.${s});
+
forAllSystems = fn: lib.genAttrs systems (system: fn nixpkgs.legacyPackages.${system});
+
treefmt = forAllSystems (pkgs: treefmt-nix.lib.evalModule pkgs ./nix/treefmt.nix);
in {
lib.x86_64-linux = import ./global/utils.nix {
inherit inputs;
···
nixosConfigurations = import systems/default.nix {inherit inputs lib;};
-
devShells = forAllSystems (pkgs: {
-
default = pkgs.mkShellNoCC {
-
packages = [
-
(pkgs.python311.withPackages (p: [p.requests]))
-
pkgs.nixos-rebuild
-
pkgs.nvd
-
];
-
};
-
});
+
devShells = forAllSystems (pkgs: import ./nix/devshell.nix {inherit pkgs inputs;});
-
checks = forAllSystems (pkgs: {
-
format-deadcode-check = pkgs.stdenvNoCC.mkDerivation {
-
name = "deadcode_check";
-
src = ./.;
-
dontPatch = true;
-
dontConfigure = true;
-
-
buildInputs = with pkgs; [alejandra deadnix];
-
buildPhase = ''
-
set -euo pipefail
-
-
deadnix -f .
-
echo "All done!"
-
'';
+
checks = forAllSystems (pkgs:
+
(import ./nix/checks.nix {inherit pkgs inputs;})
+
// {
+
formatting = treefmt.${pkgs.system}.config.build.check self;
+
});
-
installPhase = "touch $out";
-
};
-
});
-
-
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra;
+
formatter = forAllSystems (pkgs: treefmt.${pkgs.system}.config.build.wrapper);
};
}
-20
global/core.nix
···
{
pkgs,
inputs,
-
lib,
...
}: {
imports = [
···
hardware.enableRedistributableFirmware = true;
services.fwupd.enable = true;
-
# FIXME: doesn't seem to actually update anything
-
system.autoUpgrade = lib.mkDefault {
-
enable = false;
-
flake = "https://patchy.soopy.moe/cassie/gensokyo/archive/main.tar.gz";
-
dates = "*-*-* *:00/15:00";
-
flags = [
-
"--options"
-
"tarball-ttl"
-
"0"
-
];
-
allowReboot = false; # this breaks our current setup with encrypted secureboot
-
};
-
boot.tmp = {
useTmpfs = false; # this causes oom on kernel builds
cleanOnBoot = true;
};
-
-
# # Enable crash dumps globally
-
# boot.crashDump = {
-
# enable = true;
-
# reservedMemory = "128M";
-
# };
time.timeZone = "Asia/Hong_Kong";
+21
nix/checks.nix
···
+
{
+
inputs,
+
pkgs,
+
}: {
+
deadcode = pkgs.stdenvNoCC.mkDerivation {
+
name = "deadcode_check";
+
src = inputs.self;
+
dontPatch = true;
+
dontConfigure = true;
+
+
buildInputs = with pkgs; [deadnix];
+
buildPhase = ''
+
set -euo pipefail
+
+
deadnix -f .
+
echo "All done!"
+
'';
+
+
installPhase = "touch $out";
+
};
+
}
+8
nix/devshell.nix
···
+
{pkgs, ...}: {
+
default = pkgs.mkShellNoCC {
+
packages = [
+
pkgs.nixos-rebuild
+
pkgs.nvd
+
];
+
};
+
}
+4
nix/treefmt.nix
···
+
{...}: {
+
projectRootFile = "flake.nix";
+
programs.alejandra.enable = true;
+
}