Evie Litherland-Smith
50fa154a90
Split chromium workspace into web (for main browser) and apps (for PWAs) Update waybar workspace icons, remove "urgent" icon since I've got an updating theme anyway
260 lines
8.8 KiB
Nix
260 lines
8.8 KiB
Nix
{
|
|
description = "Evie's machine configurations";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
stylix = {
|
|
url = "github:danth/stylix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs = { nixpkgs, home-manager, stylix, ... }:
|
|
let
|
|
default = {
|
|
hostName = "Atlas";
|
|
user = "xenia";
|
|
system = "x86_64-linux";
|
|
group = "users";
|
|
shell = "zsh";
|
|
systemModules = [ ./system/hyprland.nix ];
|
|
homeModules = [
|
|
./home/accounts/default.nix
|
|
./home/emacs/default.nix
|
|
./home/hyprland/default.nix
|
|
./home/alacritty.nix
|
|
./home/btop.nix
|
|
./home/default.nix
|
|
./home/media.nix
|
|
./home/pass.nix
|
|
];
|
|
stateVersion = "23.05";
|
|
};
|
|
systemConfig = { hostName ? default.hostName, user ? default.user
|
|
, system ? default.system, group ? default.group, shell ? default.shell
|
|
, systemModules ? default.systemModules, serviceModules ? [ ]
|
|
, homeModules ? default.homeModules, stateVersion ? default.stateVersion
|
|
}:
|
|
let specialArgs = { inherit hostName user; };
|
|
in nixpkgs.lib.nixosSystem {
|
|
inherit system specialArgs;
|
|
modules = [
|
|
./hosts/${hostName}/configuration.nix
|
|
./hosts/${hostName}/hardware-configuration.nix
|
|
home-manager.nixosModules.home-manager
|
|
stylix.nixosModules.stylix
|
|
({ config, lib, pkgs, ... }: {
|
|
boot.loader = {
|
|
systemd-boot.enable = true;
|
|
efi.canTouchEfiVariables = true;
|
|
};
|
|
programs = {
|
|
${shell}.enable = true;
|
|
nano = {
|
|
enable = true;
|
|
syntaxHighlight = true;
|
|
nanorc = ''
|
|
set nowrap
|
|
set tabstospaces
|
|
set tabsize 2
|
|
'';
|
|
};
|
|
};
|
|
nix = {
|
|
enable = true;
|
|
settings = {
|
|
experimental-features = [ "nix-command" "flakes" ];
|
|
auto-optimise-store = true;
|
|
};
|
|
channel.enable = true;
|
|
registry = {
|
|
nixpkgs.to = {
|
|
type = "path";
|
|
path = pkgs.path;
|
|
};
|
|
};
|
|
gc = {
|
|
automatic = true;
|
|
options = "--delete-older-than 7d";
|
|
};
|
|
optimise.automatic = true;
|
|
extraOptions = ''
|
|
keep-outputs = true
|
|
keep-derivations = true
|
|
min-free = ${toString (100 * 1024 * 1024)}
|
|
max-free = ${toString (1024 * 1024 * 1024)}
|
|
'';
|
|
};
|
|
nixpkgs.config.allowUnfreePredicate = pkg:
|
|
builtins.elem (lib.getName pkg) [
|
|
"steam"
|
|
"steam-original"
|
|
"steam-run"
|
|
"discord"
|
|
"nomachine-client"
|
|
"zoom"
|
|
];
|
|
system = { inherit stateVersion; };
|
|
networking = {
|
|
inherit hostName;
|
|
firewall.enable = true;
|
|
};
|
|
stylix = {
|
|
autoEnable = false;
|
|
targets = {
|
|
chromium.enable = true;
|
|
console.enable = true;
|
|
lightdm.enable = true;
|
|
};
|
|
image = ./wallpapers/tokyo-space.png;
|
|
base16Scheme =
|
|
"${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml";
|
|
polarity = "dark";
|
|
opacity = {
|
|
popups = 0.5;
|
|
terminal = 0.8;
|
|
};
|
|
fonts = rec {
|
|
emoji = {
|
|
name = "Noto Color Emoji";
|
|
package = pkgs.noto-fonts-emoji;
|
|
};
|
|
monospace = {
|
|
name = "FiraMono Nerd Font";
|
|
package =
|
|
(pkgs.nerdfonts.override { fonts = [ "FiraMono" ]; });
|
|
};
|
|
sansSerif = {
|
|
name = "Fira Sans";
|
|
package = pkgs.fira;
|
|
};
|
|
serif = sansSerif;
|
|
};
|
|
homeManagerIntegration.followSystem = true;
|
|
};
|
|
fonts = {
|
|
packages = with pkgs; [
|
|
fira
|
|
fira-mono
|
|
fira-code
|
|
(nerdfonts.override {
|
|
fonts = [ "FiraCode" "NerdFontsSymbolsOnly" ];
|
|
})
|
|
emacs-all-the-icons-fonts
|
|
weather-icons
|
|
noto-fonts
|
|
noto-fonts-cjk
|
|
noto-fonts-emoji
|
|
liberation_ttf
|
|
];
|
|
fontconfig.enable = true;
|
|
};
|
|
users.users = let
|
|
authorizedKeys.keys = [
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINI1dWlS16Keil0MGPWmMsBzx8F9ylfz+fRwxUr8/tZ/ ion"
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIANfkqd5lPTsSPU3SRYnAa1UjCYDmDeBTyzq5McmWlm6 xenia@Vanguard"
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ/ZSSCN5sqrA+tdoIZr5EUm5DRuBV4dQ7J+QBEtUwUU xenia@Northstar"
|
|
];
|
|
in {
|
|
root.openssh = { inherit authorizedKeys; };
|
|
${user} = {
|
|
inherit group;
|
|
isNormalUser = true;
|
|
description = "Evie Litherland-Smith";
|
|
extraGroups =
|
|
[ "networkmanager" "wheel" "video" "input" "uinput" ];
|
|
shell = pkgs.${shell};
|
|
initialHashedPassword =
|
|
"$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
|
|
openssh = { inherit authorizedKeys; };
|
|
};
|
|
};
|
|
home-manager = {
|
|
useGlobalPkgs = true;
|
|
useUserPackages = true;
|
|
users = {
|
|
root = {
|
|
imports = [ ./home/default.nix ];
|
|
home = {
|
|
inherit stateVersion;
|
|
username = "root";
|
|
homeDirectory = "/root";
|
|
};
|
|
programs.home-manager.enable = true;
|
|
};
|
|
${user} = let
|
|
username = user;
|
|
homeDirectory = "/home/${user}";
|
|
in {
|
|
imports =
|
|
[ ./hosts/${hostName}/home.nix ./home/default.nix ]
|
|
++ homeModules;
|
|
home = { inherit username homeDirectory stateVersion; };
|
|
programs.home-manager.enable = true;
|
|
xdg.userDirs = {
|
|
enable = true;
|
|
createDirectories = true;
|
|
extraConfig = {
|
|
XDG_PROJECTS_DIR = "${homeDirectory}/Projects";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
})
|
|
] ++ systemModules ++ serviceModules;
|
|
};
|
|
in {
|
|
nixosConfigurations = {
|
|
|
|
Legion = let
|
|
hostName = "Legion";
|
|
user = "xenia";
|
|
system = "x86_64-linux";
|
|
in systemConfig {
|
|
inherit hostName user system;
|
|
systemModules = [ ./system/default.nix ];
|
|
serviceModules = [
|
|
./services/adguardhome.nix
|
|
./services/caddy.nix
|
|
./services/gitea.nix
|
|
./services/grafana.nix
|
|
./services/matrix.nix
|
|
./services/nextcloud.nix
|
|
./services/ntfy-sh.nix
|
|
./services/sshd.nix
|
|
./services/syncthing.nix
|
|
];
|
|
homeModules = [ ./home/default.nix ];
|
|
};
|
|
|
|
Northstar = let
|
|
hostName = "Northstar";
|
|
user = "xenia";
|
|
system = "x86_64-linux";
|
|
in systemConfig { inherit hostName user system; };
|
|
|
|
Ronin = let
|
|
hostName = "Ronin";
|
|
user = "elitherl";
|
|
system = "x86_64-linux";
|
|
in systemConfig { inherit hostName user system; };
|
|
|
|
Vanguard = let
|
|
hostName = "Vanguard";
|
|
user = "xenia";
|
|
system = "x86_64-linux";
|
|
in systemConfig {
|
|
inherit hostName user system;
|
|
systemModules = default.systemModules ++ [ ./system/steam.nix ];
|
|
homeModules = default.homeModules ++ [ ./home/obs.nix ];
|
|
};
|
|
|
|
};
|
|
};
|
|
}
|