2023-07-08 16:56:36 +08:00
|
|
|
{
|
2023-09-01 21:05:26 +08:00
|
|
|
description = "CNH's NixOS Flake";
|
2023-07-08 16:26:12 +08:00
|
|
|
|
2023-09-01 21:05:26 +08:00
|
|
|
inputs =
|
|
|
|
{
|
2024-04-13 20:07:40 +08:00
|
|
|
# TODO: add color scheme
|
2023-11-22 11:39:04 +08:00
|
|
|
nixpkgs.url = "github:CHN-beta/nixpkgs/nixos-23.11";
|
2024-03-02 10:49:51 +08:00
|
|
|
nixpkgs-unstable.url = "github:CHN-beta/nixpkgs/nixos-unstable";
|
2024-03-03 19:15:04 +08:00
|
|
|
"nixpkgs-23.05".url = "github:CHN-beta/nixpkgs/nixos-23.05";
|
|
|
|
"nixpkgs-22.11".url = "github:NixOS/nixpkgs/nixos-22.11";
|
|
|
|
"nixpkgs-22.05".url = "github:NixOS/nixpkgs/nixos-22.05";
|
2023-12-02 10:52:42 +08:00
|
|
|
home-manager = { url = "github:nix-community/home-manager/release-23.11"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2023-09-01 21:05:26 +08:00
|
|
|
sops-nix =
|
|
|
|
{
|
|
|
|
url = "github:Mic92/sops-nix";
|
2023-09-07 11:43:05 +08:00
|
|
|
inputs = { nixpkgs.follows = "nixpkgs"; nixpkgs-stable.follows = "nixpkgs"; };
|
2023-09-01 21:05:26 +08:00
|
|
|
};
|
|
|
|
aagl = { url = "github:ezKEa/aagl-gtk-on-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2024-01-19 10:36:06 +08:00
|
|
|
nix-index-database = { url = "github:Mic92/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs-unstable"; };
|
2023-09-01 21:05:26 +08:00
|
|
|
nur.url = "github:nix-community/NUR";
|
|
|
|
nixos-cn = { url = "github:nixos-cn/flakes"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2024-04-16 12:12:44 +08:00
|
|
|
nur-xddxdd =
|
|
|
|
{
|
|
|
|
url = "github:xddxdd/nur-packages?rev=404bc382a29f3d78b03871b96016579d6a0aa305";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2023-11-22 11:39:04 +08:00
|
|
|
nix-vscode-extensions = { url = "github:nix-community/nix-vscode-extensions"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2023-09-01 21:05:26 +08:00
|
|
|
impermanence.url = "github:nix-community/impermanence";
|
2024-01-23 13:02:19 +08:00
|
|
|
qchem = { url = "github:Nix-QChem/NixOS-QChem/release-23.11"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2023-09-08 05:49:52 +08:00
|
|
|
nixd = { url = "github:nix-community/nixd"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2023-09-01 21:05:26 +08:00
|
|
|
napalm = { url = "github:nix-community/napalm"; inputs.nixpkgs.follows = "nixpkgs"; };
|
|
|
|
nixpak = { url = "github:nixpak/nixpak"; inputs.nixpkgs.follows = "nixpkgs"; };
|
|
|
|
deploy-rs = { url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2023-11-19 16:38:21 +08:00
|
|
|
plasma-manager =
|
|
|
|
{
|
|
|
|
url = "github:pjones/plasma-manager";
|
|
|
|
inputs = { nixpkgs.follows = "nixpkgs"; home-manager.follows = "home-manager"; };
|
|
|
|
};
|
2023-11-30 14:09:23 +08:00
|
|
|
nix-doom-emacs = { url = "github:nix-community/nix-doom-emacs"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2024-01-10 20:02:06 +08:00
|
|
|
nur-linyinfeng = { url = "github:linyinfeng/nur-packages"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2024-02-15 19:22:43 +08:00
|
|
|
nixos-hardware.url = "github:CHN-beta/nixos-hardware";
|
2024-02-01 00:30:11 +08:00
|
|
|
envfs = { url = "github:Mic92/envfs"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2024-02-16 16:38:31 +08:00
|
|
|
nix-fast-build = { url = "github:/Mic92/nix-fast-build"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2024-03-16 11:45:36 +08:00
|
|
|
nix-flatpak.url = "github:gmodena/nix-flatpak";
|
2024-03-16 20:11:42 +08:00
|
|
|
chaotic =
|
|
|
|
{
|
2024-04-12 15:43:38 +08:00
|
|
|
url = "github:chaotic-cx/nyx";
|
2024-03-16 20:11:42 +08:00
|
|
|
inputs = { nixpkgs.follows = "nixpkgs"; home-manager.follows = "home-manager"; };
|
|
|
|
};
|
2024-04-16 22:10:13 +08:00
|
|
|
# TODO: pick it from nixpkgs
|
|
|
|
nix-inspect.url = "github:bluskript/nix-inspect";
|
2024-03-19 18:37:08 +08:00
|
|
|
gricad = { url = "github:Gricad/nur-packages"; flake = false; };
|
2024-04-17 08:58:46 +08:00
|
|
|
catppuccin.url = "github:catppuccin/nix";
|
2024-05-13 18:04:10 +08:00
|
|
|
bscpkgs = { url = "git+https://pm.bsc.es/gitlab/rarias/bscpkgs.git"; inputs.nixpkgs.follows = "nixpkgs"; };
|
2024-01-21 23:45:43 +08:00
|
|
|
|
2024-01-18 14:45:50 +08:00
|
|
|
misskey = { url = "git+https://github.com/CHN-beta/misskey?submodules=1"; flake = false; };
|
2024-01-21 23:45:43 +08:00
|
|
|
rsshub = { url = "github:DIYgod/RSSHub"; flake = false; };
|
2024-01-22 21:11:00 +08:00
|
|
|
zpp-bits = { url = "github:eyalz800/zpp_bits"; flake = false; };
|
2024-01-23 13:02:19 +08:00
|
|
|
citation-style-language = { url = "git+https://github.com/zepinglee/citeproc-lua?submodules=1"; flake = false; };
|
|
|
|
concurrencpp = { url = "github:David-Haim/concurrencpp"; flake = false; };
|
|
|
|
cppcoro = { url = "github:Garcia6l20/cppcoro"; flake = false; };
|
|
|
|
date = { url = "github:HowardHinnant/date"; flake = false; };
|
|
|
|
eigen = { url = "gitlab:libeigen/eigen"; flake = false; };
|
|
|
|
matplotplusplus = { url = "github:alandefreitas/matplotplusplus"; flake = false; };
|
|
|
|
nameof = { url = "github:Neargye/nameof"; flake = false; };
|
|
|
|
nodesoup = { url = "github:olvb/nodesoup"; flake = false; };
|
|
|
|
tgbot-cpp = { url = "github:reo7sp/tgbot-cpp"; flake = false; };
|
|
|
|
v-sim = { url = "gitlab:l_sim/v_sim"; flake = false; };
|
2024-02-05 17:40:45 +08:00
|
|
|
win11os-kde = { url = "github:yeyushengfan258/Win11OS-kde"; flake = false; };
|
2024-02-09 14:59:33 +08:00
|
|
|
fluent-kde = { url = "github:vinceliuice/Fluent-kde"; flake = false; };
|
2024-02-09 22:05:24 +08:00
|
|
|
rycee = { url = "gitlab:rycee/nur-expressions"; flake = false; };
|
2024-04-16 12:25:55 +08:00
|
|
|
blurred-wallpaper =
|
|
|
|
{ url = "github:bouteillerAlan/blurredwallpaper?rev=aecc88d43e458a0962a0091dcdb7baac34e263be"; flake = false; };
|
2024-02-11 21:41:43 +08:00
|
|
|
slate = { url = "github:TheBigWazz/Slate"; flake = false; };
|
2024-02-15 19:22:43 +08:00
|
|
|
linux-surface = { url = "github:linux-surface/linux-surface"; flake = false; };
|
2024-02-16 15:32:26 +08:00
|
|
|
lepton = { url = "github:black7375/Firefox-UI-Fix"; flake = false; };
|
2024-02-19 17:25:27 +08:00
|
|
|
lmod = { url = "github:TACC/Lmod"; flake = false; };
|
2024-02-27 18:51:12 +08:00
|
|
|
mumax = { url = "github:CHN-beta/mumax"; flake = false; };
|
2024-03-31 12:04:10 +08:00
|
|
|
kylin-virtual-keyboard = { url = "git+https://gitee.com/openkylin/kylin-virtual-keyboard.git"; flake = false; };
|
2024-04-13 13:57:38 +08:00
|
|
|
cjktty = { url = "github:zhmars/cjktty-patches"; flake = false; };
|
2024-05-05 10:43:45 +08:00
|
|
|
zxorm = { url = "github:CHN-beta/zxorm"; flake = false; };
|
2024-05-04 17:46:14 +08:00
|
|
|
openxlsx = { url = "github:troldal/OpenXLSX"; flake = false; };
|
2024-05-05 13:05:20 +08:00
|
|
|
sqlite-orm = { url = "github:fnc12/sqlite_orm"; flake = false; };
|
2024-05-17 20:01:11 +08:00
|
|
|
|
|
|
|
# does not support lfs yet
|
|
|
|
# nixos-wallpaper = { url = "git+https://git.chn.moe/chn/nixos-wallpaper.git"; flake = false; };
|
2023-09-01 21:05:26 +08:00
|
|
|
};
|
2023-07-08 16:26:12 +08:00
|
|
|
|
2023-09-01 21:05:26 +08:00
|
|
|
outputs = inputs:
|
|
|
|
let
|
|
|
|
localLib = import ./local/lib inputs.nixpkgs.lib;
|
2024-05-08 11:15:57 +08:00
|
|
|
devices = builtins.filter (dir: (builtins.readDir ./devices/${dir})."default.nix" or null == "regular" )
|
|
|
|
(builtins.attrNames (builtins.readDir ./devices));
|
2023-09-01 21:05:26 +08:00
|
|
|
in
|
|
|
|
{
|
|
|
|
packages.x86_64-linux =
|
2024-05-05 12:58:35 +08:00
|
|
|
let pkgs = (import inputs.nixpkgs
|
|
|
|
{
|
|
|
|
system = "x86_64-linux";
|
|
|
|
config.allowUnfree = true;
|
|
|
|
overlays = [ inputs.self.overlays.default ];
|
|
|
|
});
|
|
|
|
in
|
|
|
|
{
|
|
|
|
default = inputs.nixpkgs.legacyPackages.x86_64-linux.writeText "systems"
|
|
|
|
(builtins.concatStringsSep "\n" (builtins.map
|
|
|
|
(system: builtins.toString inputs.self.outputs.nixosConfigurations.${system}.config.system.build.toplevel)
|
|
|
|
devices));
|
|
|
|
hpcstat =
|
|
|
|
let openssh = (pkgs.pkgsStatic.openssh.override { withLdns = false; etcDir = null; }).overrideAttrs
|
|
|
|
(prev: { doCheck = false; patches = prev.patches ++ [ ./local/pkgs/hpcstat/openssh.patch ];});
|
|
|
|
in pkgs.pkgsStatic.localPackages.hpcstat.override { inherit openssh; standalone = true; };
|
|
|
|
}
|
|
|
|
// (
|
|
|
|
builtins.listToAttrs (builtins.map
|
|
|
|
(system:
|
|
|
|
{
|
|
|
|
name = system;
|
|
|
|
value = inputs.self.outputs.nixosConfigurations.${system}.config.system.build.toplevel;
|
|
|
|
})
|
|
|
|
devices)
|
|
|
|
);
|
2024-03-25 16:55:13 +08:00
|
|
|
nixosConfigurations =
|
|
|
|
(
|
|
|
|
(builtins.listToAttrs (builtins.map
|
|
|
|
(system:
|
2023-09-01 21:05:26 +08:00
|
|
|
{
|
2024-03-25 16:55:13 +08:00
|
|
|
name = system;
|
|
|
|
value = inputs.nixpkgs.lib.nixosSystem
|
|
|
|
{
|
|
|
|
system = "x86_64-linux";
|
|
|
|
specialArgs = { topInputs = inputs; inherit localLib; };
|
|
|
|
modules = localLib.mkModules
|
|
|
|
[
|
|
|
|
(moduleInputs: { config.nixpkgs.overlays = [(prev: final:
|
|
|
|
# replace pkgs with final to avoid infinite recursion
|
|
|
|
{ localPackages = import ./local/pkgs (moduleInputs // { pkgs = final; }); })]; })
|
|
|
|
./modules
|
2024-04-09 20:52:26 +08:00
|
|
|
./devices/${system}
|
2024-03-25 16:55:13 +08:00
|
|
|
];
|
|
|
|
};
|
|
|
|
})
|
|
|
|
devices))
|
|
|
|
// {
|
|
|
|
pi3b = inputs.nixpkgs.lib.nixosSystem
|
|
|
|
{
|
|
|
|
system = "aarch64-linux";
|
2024-01-16 22:41:03 +08:00
|
|
|
specialArgs = { topInputs = inputs; inherit localLib; };
|
|
|
|
modules = localLib.mkModules
|
|
|
|
[
|
2024-03-16 12:16:23 +08:00
|
|
|
(moduleInputs: { config.nixpkgs.overlays = [(prev: final:
|
|
|
|
# replace pkgs with final to avoid infinite recursion
|
|
|
|
{ localPackages = import ./local/pkgs (moduleInputs // { pkgs = final; }); })]; })
|
2024-01-16 22:41:03 +08:00
|
|
|
./modules
|
2024-04-09 20:52:26 +08:00
|
|
|
./devices/pi3b
|
2024-01-16 22:41:03 +08:00
|
|
|
];
|
2023-12-11 19:19:36 +08:00
|
|
|
};
|
2024-03-25 16:55:13 +08:00
|
|
|
}
|
|
|
|
);
|
2023-09-01 21:05:26 +08:00
|
|
|
deploy =
|
|
|
|
{
|
|
|
|
sshUser = "root";
|
|
|
|
user = "root";
|
|
|
|
fastConnection = true;
|
|
|
|
autoRollback = false;
|
|
|
|
magicRollback = false;
|
2024-02-27 13:21:13 +08:00
|
|
|
nodes = builtins.listToAttrs (builtins.map
|
2023-09-01 21:05:26 +08:00
|
|
|
(node:
|
|
|
|
{
|
|
|
|
name = node;
|
|
|
|
value =
|
|
|
|
{
|
|
|
|
hostname = node;
|
|
|
|
profiles.system.path = inputs.self.nixosConfigurations.${node}.pkgs.deploy-rs.lib.activate.nixos
|
2023-11-19 17:44:07 +08:00
|
|
|
inputs.self.nixosConfigurations.${node};
|
2023-09-01 21:05:26 +08:00
|
|
|
};
|
|
|
|
})
|
2024-03-28 21:32:24 +08:00
|
|
|
[ "vps6" "vps7" "nas" "surface" "xmupc1" "xmupc2" "pi3b" ]
|
2024-02-27 13:21:13 +08:00
|
|
|
);
|
2023-09-01 21:05:26 +08:00
|
|
|
};
|
2023-10-08 10:57:57 +08:00
|
|
|
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks inputs.self.deploy) inputs.deploy-rs.lib;
|
2023-10-13 21:13:28 +08:00
|
|
|
overlays.default = final: prev:
|
2024-04-01 18:55:33 +08:00
|
|
|
{ localPackages = (import ./local/pkgs { inherit (inputs) lib; pkgs = final; topInputs = inputs; }); };
|
2024-02-04 11:13:34 +08:00
|
|
|
config.archive = false;
|
2024-05-05 12:58:35 +08:00
|
|
|
devShells.x86_64-linux =
|
|
|
|
let pkgs = (import inputs.nixpkgs
|
|
|
|
{
|
|
|
|
system = "x86_64-linux";
|
|
|
|
config.allowUnfree = true;
|
|
|
|
overlays = [ inputs.self.overlays.default ];
|
|
|
|
});
|
|
|
|
in
|
|
|
|
{
|
|
|
|
biu = pkgs.mkShell
|
|
|
|
{
|
|
|
|
packages = with pkgs; [ pkg-config cmake ninja clang-tools_17 ];
|
|
|
|
buildInputs =
|
|
|
|
(with pkgs; [ fmt boost magic-enum libbacktrace eigen range-v3 ])
|
|
|
|
++ (with pkgs.localPackages; [ concurrencpp tgbot-cpp nameof ]);
|
|
|
|
# hardeningDisable = [ "all" ];
|
|
|
|
# NIX_DEBUG = "1";
|
|
|
|
};
|
|
|
|
hpcstat = pkgs.mkShell
|
|
|
|
{
|
|
|
|
inputsFrom = [ inputs.self.packages.x86_64-linux.hpcstat ];
|
|
|
|
packages = [ pkgs.clang-tools_17 ];
|
|
|
|
CMAKE_EXPORT_COMPILE_COMMANDS = "1";
|
|
|
|
};
|
|
|
|
};
|
2023-09-01 21:05:26 +08:00
|
|
|
};
|
2023-07-08 16:56:36 +08:00
|
|
|
}
|