Evie Litherland-Smith
49f4725d9a
Don't know why yet, but could be nice to have int the future. Note this the whole config flake, rather than just the pinned version of nixpkgs
278 lines
9.4 KiB
Nix
278 lines
9.4 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 = { self, nixpkgs, home-manager, stylix, ... }:
|
|
let
|
|
default = {
|
|
hostName = "Atlas";
|
|
user = "xenia";
|
|
system = "x86_64-linux";
|
|
group = "users";
|
|
shell = "zsh";
|
|
systemModules = [ ./system/hyprland.nix ];
|
|
serviceModules = [ ];
|
|
homeModules = [
|
|
./home/default.nix
|
|
./home/emacs.nix
|
|
./home/accounts/default.nix
|
|
./home/hyprland/default.nix
|
|
./home/nyxt/default.nix
|
|
];
|
|
stateVersion = "23.05";
|
|
};
|
|
systemConfig = { hostName ? default.hostName, user ? default.user
|
|
, system ? default.system, group ? default.group, shell ? default.shell
|
|
, systemModules ? default.systemModules
|
|
, serviceModules ? default.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.flake = nixpkgs;
|
|
nixos.flake = self;
|
|
};
|
|
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;
|
|
firewall.enable = true;
|
|
};
|
|
stylix = {
|
|
autoEnable = false;
|
|
targets = {
|
|
chromium.enable = true;
|
|
console.enable = true;
|
|
};
|
|
image = ./wallpapers/space.png;
|
|
base16Scheme =
|
|
"${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
|
override = {
|
|
scheme =
|
|
"Catppuccin Mocha, using fg and bg colours from emacs modus-vivdendi-tinted";
|
|
base00 = "0d0e1c";
|
|
base01 = "1d2235";
|
|
base04 = "c6daff";
|
|
base05 = "ffffff";
|
|
};
|
|
polarity = "dark";
|
|
opacity = {
|
|
popups = 0.5;
|
|
terminal = 0.8;
|
|
};
|
|
fonts = rec {
|
|
sizes.terminal = 12;
|
|
emoji = {
|
|
name = "Noto Color Emoji";
|
|
package = pkgs.noto-fonts-emoji;
|
|
};
|
|
monospace = {
|
|
name = "FiraCode Nerd Font";
|
|
package =
|
|
(pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; });
|
|
};
|
|
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 = {
|
|
extraSpecialArgs = { inherit hostName; };
|
|
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 = {
|
|
|
|
## Server
|
|
|
|
Legion = let
|
|
hostName = "Legion";
|
|
user = "xenia";
|
|
system = "x86_64-linux";
|
|
in systemConfig {
|
|
inherit hostName user system;
|
|
systemModules = [ ./system/default.nix ./system/autoupgrade.nix ];
|
|
serviceModules = [
|
|
./services/adguardhome.nix
|
|
./services/caddy.nix
|
|
./services/gitea.nix
|
|
./services/grafana.nix
|
|
./services/ntfy-sh.nix
|
|
./services/sshd.nix
|
|
./services/syncthing.nix
|
|
];
|
|
homeModules = [ ./home/default.nix ];
|
|
};
|
|
|
|
## Laptops
|
|
|
|
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; };
|
|
|
|
## Desktops
|
|
|
|
Scorch = let
|
|
hostName = "Scorch";
|
|
user = "elitherl";
|
|
system = "x86_64-linux";
|
|
in systemConfig {
|
|
inherit hostName user system;
|
|
systemModules = default.systemModules ++ [ ./system/autoupgrade.nix ];
|
|
};
|
|
|
|
Vanguard = let
|
|
hostName = "Vanguard";
|
|
user = "xenia";
|
|
system = "x86_64-linux";
|
|
in systemConfig {
|
|
inherit hostName user system;
|
|
systemModules = default.systemModules
|
|
++ [ ./system/autoupgrade.nix ./system/steam.nix ];
|
|
homeModules = default.homeModules ++ [ ./home/games/default.nix ];
|
|
};
|
|
|
|
};
|
|
};
|
|
}
|