dotfiles/flake.nix

151 lines
4.5 KiB
Nix
Raw Normal View History

2024-05-31 12:41:57 +02:00
{
2024-06-01 16:56:07 +02:00
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland = {
type = "git";
url = "https://github.com/hyprwm/Hyprland";
submodules = true;
};
2024-06-01 18:06:00 +02:00
waybar = {
type = "git";
url = "https://github.com/thomasave/Waybar";
submodules = true;
};
2024-06-01 16:56:07 +02:00
split-monitor-workspaces = {
url = "github:Duckonaut/split-monitor-workspaces";
inputs.hyprland.follows = "hyprland";
2024-05-31 12:41:57 +02:00
};
2024-06-02 22:20:01 +02:00
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-06-01 16:56:07 +02:00
};
2024-05-31 12:41:57 +02:00
2024-06-01 16:56:07 +02:00
outputs =
{ self
, nixpkgs
, home-manager
, split-monitor-workspaces
, ...
}@inputs:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
2024-06-02 14:38:25 +02:00
commonModules = host: user: [
./hosts/${host}/hardware-configuration.nix
2024-06-02 14:02:14 +02:00
{
2024-06-02 14:38:25 +02:00
networking.hostName = host;
2024-06-02 14:02:14 +02:00
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
time.timeZone = "Europe/Brussels";
nix.settings = {
substituters = [ "https://hyprland.cachix.org" ];
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
experimental-features = [ "nix-command" "flakes" ];
};
programs.zsh.enable = true;
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
};
services.greetd = {
enable = true;
settings = rec {
initial_session = {
command = "Hyprland";
user = "user";
2024-06-01 16:56:07 +02:00
};
2024-06-02 14:02:14 +02:00
default_session = initial_session;
};
};
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
2024-06-02 14:17:07 +02:00
users.users.${user} = {
2024-06-02 14:02:14 +02:00
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKAa3tMzSCRuprEACrBsKI0F/o73o6J9L1qR3TaZn/N8 user@Kell"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBxMq4kubz4wWr4S8xU3GRkPcn6XRS3y7IP+qylN5QAp user@Aloria"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHtzTFdvLEvXpv69qAWLTipl4hgsKgRrRrWJRecsFthG user@Riva"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOxtJRtlAphl8euicVUR/6C7o+tyhpYmcbMBLHnldEIX server@mallorea"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILazQU/Y9I5PkMZoG/Lzc6mDR7s+aRHzqJoFUhYSse4P PocoF1"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFoUYcVMsDw6tmjfdOuQkwaXx8fohKJs/6/5HoLzTP6x Tablet"
];
shell = pkgs.zsh;
};
environment.systemPackages = with pkgs; [
wget
curl
git
];
services.openssh = {
enable = true;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = false;
};
};
networking.firewall.enable = false;
system.stateVersion = "23.11";
environment.sessionVariables.NIXOS_OZONE_WL = "1"; #hint electron apps to use wayland:
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
iosevka
nerdfonts
2024-06-01 16:56:07 +02:00
];
2024-06-02 14:02:14 +02:00
}
home-manager.nixosModules.home-manager
{
home-manager = {
extraSpecialArgs = { inherit inputs; }; # allows access to flake inputs in hm modules
useGlobalPkgs = true;
useUserPackages = true;
2024-06-02 14:17:07 +02:00
users.${user} = {
2024-06-02 14:38:25 +02:00
imports = [ ./home/${host}.nix ];
2024-06-02 14:02:14 +02:00
};
};
}
2024-06-02 14:38:25 +02:00
./hosts/${host}
2024-06-02 14:02:14 +02:00
];
2024-06-02 14:38:25 +02:00
mkSystem = host: cfg: nixpkgs.lib.nixosSystem {
2024-06-02 14:02:14 +02:00
system = cfg.system or "x86_64-linux";
2024-06-02 14:38:25 +02:00
modules = (commonModules host cfg.user) ++ (cfg.modules or [ ]);
2024-06-02 14:03:52 +02:00
specialArgs = inputs;
2024-06-02 14:02:14 +02:00
};
systems = {
nixos = {
2024-06-02 14:17:07 +02:00
user = "user";
2024-06-02 14:03:52 +02:00
};
2024-06-02 16:36:56 +02:00
Kell = {
user = "user";
};
2024-06-01 16:56:07 +02:00
};
2024-06-02 14:02:14 +02:00
in
{
nixosConfigurations = nixpkgs.lib.mapAttrs mkSystem systems;
2024-05-31 12:41:57 +02:00
};
}