dotfiles/flake.nix

59 lines
2.2 KiB
Nix

{
inputs = {
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-21.11";
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.url = "github:fabianhauser/etaxes-sg-nix";
};
outputs = { self, nixpkgs-unstable, nixpkgs-stable, home-manager, qois-infrastructure, ... }@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; };
users.fhauser = import ./home/fhauser/default.nix;
};
};
mapHostnameToAttr = host:
nixpkgs-stable.lib.nixosSystem {
inherit system;
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";
};
};
};
}