dotfiles/flake.nix

72 lines
2.7 KiB
Nix

{
inputs = {
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-21.11";
nixos-hardware.url = "github:NixOS/nixos-hardware";
home-manager.url = "github:nix-community/home-manager/release-21.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs-stable";
qois-infrastructure.url = "path:/etc/nixos/qois-infrastructure";
fabianhauser-etaxes-sg.url = "github:fabianhauser/etaxes-sg-nix";
fabianhauser-etaxes-sg.inputs.nixpkgs.follows = "nixpkgs-stable";
};
outputs = { self, nixpkgs-unstable, nixpkgs-stable, home-manager
, qois-infrastructure, fabianhauser-etaxes-sg, nixos-hardware, ... }@inputs:
let
system = "x86_64-linux";
pkgsUnstable = import nixpkgs-unstable {
inherit system;
config.allowUnfree = true; # For vscode
};
in {
checks.${system}.formatCheck = let pkgs = pkgsUnstable;
in pkgs.runCommand "nixfmt-check" { } ''
set -euo pipefail
cd ${self}
${pkgs.findutils}/bin/find . -type f -name '*.nix' -exec ${pkgs.nixfmt}/bin/nixfmt --check {} +
mkdir $out
'';
# Build with `nixos-rebuild --flake .#<hostname>` or
# `nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel
nixosConfigurations = let
hosts = [ "speer" "hummelberg" ];
home-manager-config = {
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = {
inherit pkgsUnstable;
pkgsEtaxesSg = fabianhauser-etaxes-sg.packages.${system};
};
users.fhauser = import ./home/fhauser/default.nix;
};
};
mapHostnameToAttr = host:
nixpkgs-stable.lib.nixosSystem {
inherit system;
specialArgs.hardwareModules = nixos-hardware.nixosModules;
modules = [
qois-infrastructure.nixosModule
home-manager.nixosModules.home-manager
home-manager-config
./host/${host}/default.nix
];
};
in pkgsUnstable.lib.genAttrs hosts mapHostnameToAttr;
homeConfigurations = {
fhauser = home-manager.lib.homeManagerConfiguration rec {
inherit system;
username = "fhauser";
configuration = import ./home/${username}/default.nix;
extraSpecialArgs = { inherit pkgsUnstable; };
# Update the state version as needed.
# See the changelog here:
# https://nix-community.github.io/home-manager/release-notes.html#sec-release-21.05
stateVersion = "21.11";
};
};
};
}