nixos/flake.nix
Evie Litherland-Smith 94e1a23bf2 Major theme updates
Switched back to tokyo-night for base scheme but disable a lot of
stylix config (and selectively re-enable for certain
modules). Manually theme things using the tokyonight palette for a
nicer and more cohesive experience

Also change to a new wallpaper, fits scheme better as well

Added named workspaces for common programs (emacs, chromium, steam)
and keep numbered workspaces as generic scratch space

Move MPRIS to right section, add hyprland/window module (with a
separator bar)
2023-11-12 13:24:09 +00:00

270 lines
9.3 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";
};
nix-index-database = {
url = "github:Mic92/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix = {
url = "github:danth/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
kmonad = {
url = "github:kmonad/kmonad?dir=nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager, nix-index-database, stylix, kmonad
, ... }@inputs:
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/nyxt/default.nix
./home/alacritty.nix
./home/btop.nix
./home/default.nix
./home/kdeconnect.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; };
extraSpecialArgs = specialArgs;
in nixpkgs.lib.nixosSystem {
inherit system specialArgs;
modules = [
./hosts/${hostName}/configuration.nix
./hosts/${hostName}/hardware-configuration.nix
home-manager.nixosModules.home-manager
nix-index-database.nixosModules.nix-index
stylix.nixosModules.stylix
kmonad.nixosModules.default
({ 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
'';
};
command-not-found.enable = false;
nix-index.enable = true;
};
nix = {
enable = true;
settings = {
experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true;
};
channel.enable = false;
nixPath = [
"nixpkgs=${pkgs.path}"
"/nix/var/nix/profiles/per-user/root/channels"
];
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"
"nomachine-client"
];
system = { inherit stateVersion; };
networking = { inherit hostName; };
stylix = {
autoEnable = false;
image = ./wallpapers/tokyo-space.png;
base16Scheme =
"${pkgs.base16-schemes}/share/themes/tokyo-night-terminal-dark.yaml";
polarity = "dark";
opacity = {
popups = 0.8;
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 = {
inherit extraSpecialArgs;
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/default.nix
./services/gitea/default.nix
./services/nextcloud/default.nix
./services/ntfy-sh/default.nix
./services/sshd/default.nix
./services/syncthing/default.nix
];
homeModules =
[ ./home/default.nix ./home/media.nix ./home/emacs/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 ];
};
};
};
}