nixos/flake.nix

177 lines
8.2 KiB
Nix
Raw Normal View History

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-06-22 16:03:30 +08:00
nixpkgs.url = "github:CHN-beta/nixpkgs/nixos-unstable";
2024-05-21 12:49:20 +08:00
"nixpkgs-23.11".url = "github:CHN-beta/nixpkgs/nixos-23.11";
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";
2024-06-22 16:03:30 +08:00
home-manager = { url = "github:nix-community/home-manager"; 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
};
2024-06-22 16:03:30 +08:00
aagl = { url = "github:ezKEa/aagl-gtk-on-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
nix-index-database = { url = "github:Mic92/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; };
2024-05-21 12:49:20 +08:00
nur-xddxdd = { url = "github:xddxdd/nur-packages"; 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-05-21 12:49:20 +08:00
qchem = { url = "github:Nix-QChem/NixOS-QChem/master"; 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"; };
};
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-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; };
zpp-bits = { url = "github:eyalz800/zpp_bits"; flake = false; };
2024-01-23 13:02:19 +08:00
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-09 22:05:24 +08:00
rycee = { url = "gitlab:rycee/nur-expressions"; flake = false; };
2024-05-21 12:49:20 +08:00
blurred-wallpaper = { url = "github:bouteillerAlan/blurredwallpaper"; flake = false; };
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; };
kylin-virtual-keyboard = { url = "git+https://gitee.com/openkylin/kylin-virtual-keyboard.git"; flake = false; };
2024-05-22 10:44:41 +08:00
cjktty = { url = "github:CHN-beta/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; };
# 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;
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
{
2024-06-29 21:39:16 +08:00
packages.x86_64-linux = rec
{
pkgs = (import inputs.nixpkgs
{ system = "x86_64-linux"; config.allowUnfree = true; overlays = [ inputs.self.overlays.default ]; });
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 ];});
duc = pkgs.pkgsStatic.duc.override { enableCairo = false; cairo = null; pango = null; };
in pkgs.pkgsStatic.localPackages.hpcstat.override
{ inherit openssh duc; standalone = true; version = inputs.self.rev or "dirty"; };
ufo = pkgs.pkgsStatic.localPackages.ufo.override { version = inputs.self.rev or "dirty"; };
chn-bsub = pkgs.pkgsStatic.localPackages.chn-bsub;
}
// (
builtins.listToAttrs (builtins.map
(system:
{ name = system; value = inputs.self.outputs.nixosConfigurations.${system}.config.system.build.toplevel; })
devices)
2024-05-05 12:58:35 +08:00
);
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
./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
./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-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-06-06 11:36:23 +08:00
config = { archive = false; branch = "production"; };
2024-06-29 21:39:16 +08:00
devShells.x86_64-linux = let inherit (inputs.self.packages.x86_64-linux) pkgs; in
{
biu = pkgs.mkShell
2024-05-05 12:58:35 +08:00
{
2024-06-29 21:39:16 +08:00
inputsFrom = [ pkgs.localPackages.biu ];
buildInputs = [ pkgs.clang-tools_18 ];
CMAKE_EXPORT_COMPILE_COMMANDS = "1";
};
hpcstat = pkgs.mkShell
2024-05-05 12:58:35 +08:00
{
2024-06-29 21:39:16 +08:00
inputsFrom = [ (inputs.self.packages.x86_64-linux.hpcstat.override { version = null; }) ];
packages = [ pkgs.clang-tools_18 ];
CMAKE_EXPORT_COMPILE_COMMANDS = "1";
};
sbatch-tui = pkgs.mkShell
{
inputsFrom = [ pkgs.localPackages.sbatch-tui ];
buildInputs = [ pkgs.clang-tools_18 ];
CMAKE_EXPORT_COMPILE_COMMANDS = "1";
};
ufo = pkgs.mkShell
{
inputsFrom = [ (inputs.self.packages.x86_64-linux.ufo.override { version = null; }) ];
packages = [ pkgs.clang-tools_18 ];
CMAKE_EXPORT_COMPILE_COMMANDS = "1";
};
chn-bsub = pkgs.mkShell
{
inputsFrom = [ pkgs.localPackages.chn-bsub ];
buildInputs = [ pkgs.clang-tools_18 ];
CMAKE_EXPORT_COMPILE_COMMANDS = "1";
2024-05-05 12:58:35 +08:00
};
2024-06-29 21:39:16 +08:00
};
2023-09-01 21:05:26 +08:00
};
2023-07-08 16:56:36 +08:00
}