nix-dotfiles/flake.nix
2025-05-20 20:57:25 +02:00

284 lines
8.0 KiB
Nix

{
inputs = {
nixpkgs.url = "nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "nixpkgs/nixpkgs-unstable";
nixpkgs-yet-unstabler.url = "github:NixOS/nixpkgs/master";
home-manager = {
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
osuchan = {
url = "git+file:///home/h7x4/git/osuchan-line-bot";
inputs.nixpkgs.follows = "nixpkgs";
};
maunium-stickerpicker = {
url = "github:h7x4/maunium-stickerpicker-nix/0.1.0";
inputs.nixpkgs.follows = "nixpkgs";
};
minecraft = {
url = "github:infinidoge/nix-minecraft/master";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
matrix-synapse-next = {
url = "github:dali99/nixos-matrix-modules/0.7.0";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{
self,
nixpkgs,
nixpkgs-unstable,
nixpkgs-yet-unstabler,
home-manager,
nixos-hardware,
matrix-synapse-next,
maunium-stickerpicker,
minecraft,
osuchan,
sops-nix,
# anyrun,
}: let
system = "x86_64-linux";
pkgs-config = {
inherit system;
config = {
allowUnfree = true;
android_sdk.accept_license = true;
segger-jlink.acceptLicense = true;
permittedInsecurePackages = [
"segger-jlink-qt4-810"
];
};
overlays = [
self.overlays.pcloud
self.overlays.unstableLinuxPackages
self.overlays.waylandImeIntegration
self.overlays.gitoxide
minecraft.overlays.default
osuchan.overlays.default
];
};
pkgs = import nixpkgs pkgs-config;
unstable-pkgs = import nixpkgs-unstable pkgs-config;
yet-unstabler-pkgs = import nixpkgs-yet-unstabler pkgs-config;
in {
inherit pkgs;
inherit (nixpkgs) lib;
extendedLib = import ./lib { stdlib = pkgs.lib; };
inputs = pkgs.lib.mapAttrs (_: src: src.outPath) inputs;
devShells.${system}.default = pkgs.mkShellNoCC {
packages = with pkgs; [ sops ];
};
packages.${system} = {
bcachefsInstallerIso = let
nixosSystem = nixpkgs.lib.nixosSystem {
inherit system;
modules = [
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix"
({ lib, pkgs, ... }: {
boot.supportedFilesystems = [ "bcachefs" ];
boot.kernelPackages = lib.mkOverride 0 pkgs.linuxPackages_latest;
})
];
};
in nixosSystem.config.system.build.isoImage;
};
overlays = let
nonrecursive-unstable-pkgs = import nixpkgs-unstable {
inherit system;
config.allowUnfree = true;
config.segger-jlink.acceptLicense = true;
config.permittedInsecurePackages = [
"segger-jlink-qt4-796s"
];
};
in {
pcloud = import ./overlays/pcloud.nix {
inherit (nixpkgs) lib;
pkgs = nonrecursive-unstable-pkgs;
};
gitoxide = _: _: {
gitoxide = nonrecursive-unstable-pkgs.gitoxide;
};
unstableLinuxPackages = _: _: {
linuxPackages_latest = nonrecursive-unstable-pkgs.linuxPackages_latest;
};
waylandImeIntegration = import ./overlays/wayland-ime-integration.nix;
};
nixosModules = {
machineVars = ./modules/machineVars.nix;
socketActivation = ./modules/socketActivation.nix;
};
homeModules = {
cargo = ./home/modules/programs/cargo;
colors = ./home/modules/colors.nix;
direnv-auto-prune = ./home/modules/programs/direnv/auto-prune.nix;
downloads-sorter = ./home/modules/services/downloads-sorter.nix;
gpg = ./home/modules/programs/gpg;
mpd-auto-updater = ./home/modules/services/mpd.nix;
neovim-auto-clean-swapfiles = ./home/modules/programs/neovim/auto-clean-swapfiles.nix;
newsboat = ./home/modules/programs/newsboat;
nix-index-auto-update-database = ./home/modules/programs/nix-index/auto-update-database.nix;
prism-launcher = ./home/modules/programs/prism-launcher;
shellAliases = ./home/modules/shellAliases.nix;
systemd-tmpfiles = ./home/modules/systemd-tmpfiles.nix;
uidGid = ./home/modules/uidGid.nix;
};
homeConfigurations = {
h7x4 = home-manager.lib.homeManagerConfiguration {
inherit system;
inherit pkgs;
username = "h7x4";
homeDirectory = "/home/h7x4";
stateVersion = "25.05";
configuration = {
imports = [
./home/home.nix
./modules/machineVars.nix
] ++ (builtins.attrValues self.homeModules);
machineVars = {
headless = false;
fixDisplayCommand = "echo 'not available'";
gaming = true;
development = true;
laptop = false;
};
};
};
};
nixosConfigurations = let
nixSys = name: extraConfig:
nixpkgs.lib.nixosSystem
({
inherit system;
inherit pkgs;
inherit (pkgs) lib;
specialArgs = {
inherit inputs;
inherit unstable-pkgs;
inherit yet-unstabler-pkgs;
inherit (self) extendedLib;
} // (extraConfig.specialArgs or { });
modules = [
"${home-manager}/nixos"
./hosts/common
./hosts/${name}/configuration.nix
./modules/machineVars.nix
./modules/socketActivation.nix
sops-nix.nixosModules.sops
({ config, ... }:
{
home-manager = {
useGlobalPkgs = true;
extraSpecialArgs = {
inherit inputs;
inherit unstable-pkgs;
inherit yet-unstabler-pkgs;
inherit (self) extendedLib;
inherit (config) machineVars;
machineName = name;
};
sharedModules = [
inputs.sops-nix.homeManagerModules.sops
] ++ (builtins.attrValues self.homeModules);
users.h7x4.imports = [
./home/home.nix
./hosts/${name}/home
];
};
})
] ++ (extraConfig.modules or [ ]);
}
//
(builtins.removeAttrs extraConfig [
"modules"
"specialArgs"
]));
in {
dosei = nixSys "dosei" {
modules = [
{
home-manager.users.h7x4.home.uid = 1000;
}
nixos-hardware.nixosModules.common-pc
nixos-hardware.nixosModules.common-pc-ssd
nixos-hardware.nixosModules.common-cpu-intel
nixos-hardware.nixosModules.common-gpu-intel
];
};
kasei = nixSys "kasei" {
modules = [
nixos-hardware.nixosModules.common-pc
nixos-hardware.nixosModules.common-pc-ssd
nixos-hardware.nixosModules.common-cpu-amd
nixos-hardware.nixosModules.common-cpu-amd-pstate
nixos-hardware.nixosModules.common-gpu-nvidia-nonprime
];
};
xps16 = nixSys "xps16" {
modules = [
nixos-hardware.nixosModules.common-hidpi
nixos-hardware.nixosModules.common-pc-laptop
nixos-hardware.nixosModules.common-pc-laptop-ssd
nixos-hardware.nixosModules.common-cpu-intel
nixos-hardware.nixosModules.common-gpu-intel
];
};
tsuki = nixSys "tsuki" {
modules = [
matrix-synapse-next.nixosModules.default
osuchan.outputs.nixosModules.default
maunium-stickerpicker.nixosModules.default
(args: import minecraft.outputs.nixosModules.minecraft-servers (args // {
pkgs = unstable-pkgs;
lib = unstable-pkgs.lib;
}))
];
};
};
};
}