Big reorganise

Move commonModule into system/default.nix
Keep most essential parts (user definition, home-manager init) in
flake.nix but move rest to system/default.nix

Remove some tui expressions from home and add all to home/default.nix,
will always want those so always use

Disable gamescope session unless gamescope.nix imported

Move various home.package definitions to environment.systemPackage in
system/ expressions, located based on appropriate use

Move wallpapers directory due to restructure, no other changes to it
This commit is contained in:
Evie Litherland-Smith 2023-10-09 11:40:25 +01:00
parent 024236b7c0
commit 0889818512
267 changed files with 425 additions and 437 deletions

234
flake.nix
View file

@ -73,7 +73,6 @@
outputs = { self, nixpkgs, home-manager, stylix, anyrun, ... }@inputs: outputs = { self, nixpkgs, home-manager, stylix, anyrun, ... }@inputs:
let let
flakeURL = "git+https://git.xenia.me.uk/xenia/nixos.git?ref=main";
catppuccin-themes = with inputs; { catppuccin-themes = with inputs; {
alacritty = "${catppuccin-alacritty}/catppuccin-macchiato.yml"; alacritty = "${catppuccin-alacritty}/catppuccin-macchiato.yml";
bat = "${catppuccin-bat}/Catppuccin-macchiato.tmTheme"; bat = "${catppuccin-bat}/Catppuccin-macchiato.tmTheme";
@ -97,7 +96,19 @@
systemModules = [ ./system/hyprland.nix ]; systemModules = [ ./system/hyprland.nix ];
serviceModules = serviceModules =
[ ./services/sshd/default.nix ./services/syncthing/default.nix ]; [ ./services/sshd/default.nix ./services/syncthing/default.nix ];
homeModules = [ ./home/default.nix ]; homeModules = [
./home/accounts/default.nix
./home/emacs/default.nix
./home/ferdium/default.nix
./home/hyprland/default.nix
./home/alacritty.nix
./home/default.nix
./home/firefox.nix
./home/kdeconnect.nix
./home/media.nix
./home/pass.nix
./home/zathura.nix
];
stateVersion = "23.05"; stateVersion = "23.05";
}; };
systemConfig = { hostName ? default.hostName, user ? default.user systemConfig = { hostName ? default.hostName, user ? default.user
@ -107,177 +118,14 @@
, homeModules ? default.homeModules, stateVersion ? default.stateVersion , homeModules ? default.homeModules, stateVersion ? default.stateVersion
}: }:
let let
specialArgs = { inherit hostName user group anyrun; }; specialArgs = {
inherit hostName user anyrun;
inherit (inputs) catppuccin-base16;
};
extraSpecialArgs = specialArgs // { extraSpecialArgs = specialArgs // {
inherit catppuccin-themes; inherit catppuccin-themes;
inherit (inputs) doom-emacs gitui; inherit (inputs) doom-emacs gitui;
}; };
commonModule = { lib, pkgs, ... }: {
stylix = {
autoEnable = false;
image = ./wallpapers/waves/cat-waves.png;
base16Scheme =
"${inputs.catppuccin-base16}/base16/macchiato.yaml";
fonts = {
emoji = {
name = "Noto Color Emoji";
package = pkgs.noto-fonts-emoji;
};
monospace = {
name = "Fira Mono";
package = pkgs.fira-mono;
};
sansSerif = {
name = "Fira Sans";
package = pkgs.fira;
};
serif = {
name = "Fira Sans";
package = pkgs.fira;
};
};
homeManagerIntegration.followSystem = true;
targets = {
chromium.enable = true;
console.enable = true;
grub = {
enable = true;
useImage = true;
};
};
};
fonts = {
packages = with pkgs; [
fira
fira-mono
fira-code
(nerdfonts.override { fonts = [ "FiraCode" ]; })
dejavu_fonts
noto-fonts-emoji
font-awesome
material-symbols
emacs-all-the-icons-fonts
material-design-icons
weather-icons
vscode-extensions.file-icons.file-icons
];
fontconfig = {
enable = true;
defaultFonts = {
serif = [ "Fira Sans" "DejaVu Sans" ];
sansSerif = [ "Fira Sans" "DejaVu Sans" ];
monospace = [ "Fira Mono" "DejaVu Sans Mono" ];
emoji = [ "Noto Color Emoji" ];
};
};
};
nix = {
settings = {
experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true;
};
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
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"
];
networking = {
inherit hostName;
networkmanager.enable = true;
nameservers = [ "9.9.9.9" ];
};
environment = {
systemPackages = with pkgs; [ libsecret git neofetch nitch ];
localBinInPath = true;
shellAliases.rebuild = ''
sudo nixos-rebuild switch --flake "${flakeURL}" --refresh \
&& hyprctl reload \
&& doom sync -p
'';
};
services.power-profiles-daemon.enable = true;
virtualisation.podman.enable = true;
time.timeZone = "Europe/London";
i18n = let locale = "en_GB.UTF-8";
in {
# Select internationalisation properties.
defaultLocale = locale;
extraLocaleSettings = {
LC_ADDRESS = locale;
LC_IDENTIFICATION = locale;
LC_MEASUREMENT = locale;
LC_MONETARY = locale;
LC_NAME = locale;
LC_NUMERIC = locale;
LC_PAPER = locale;
LC_TELEPHONE = locale;
LC_TIME = locale;
};
};
programs.${shell}.enable = true;
system = {
inherit stateVersion;
autoUpgrade = {
enable = true;
dates = "02:00";
allowReboot = false;
flake = flakeURL;
};
};
users.users.${user} = {
inherit group;
isNormalUser = true;
description = "Evie Litherland-Smith";
extraGroups = [ "networkmanager" "wheel" "video" ];
shell = pkgs.${shell};
initialHashedPassword =
"$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIANfkqd5lPTsSPU3SRYnAa1UjCYDmDeBTyzq5McmWlm6 xenia@Vanguard"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINI1dWlS16Keil0MGPWmMsBzx8F9ylfz+fRwxUr8/tZ/ ion"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDI44C35I2x9tqzeZDmIpbzmGJWXfATn/Wp5KzVRdlCi root@debian"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKMVEXJTqWkrpmvinPJGsSvome9bCd0CM4iu13aVG6UZ elitherl@Ronin"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ/ZSSCN5sqrA+tdoIZr5EUm5DRuBV4dQ7J+QBEtUwUU xenia@Northstar"
];
};
home-manager = {
inherit extraSpecialArgs;
useGlobalPkgs = true;
useUserPackages = true;
users.${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;
stylix.targets.xresources.enable = true;
xdg.userDirs = {
enable = true;
createDirectories = true;
extraConfig = {
XDG_PROJECTS_DIR = "${homeDirectory}/Projects";
};
};
};
};
};
in nixpkgs.lib.nixosSystem { in nixpkgs.lib.nixosSystem {
inherit system specialArgs; inherit system specialArgs;
modules = [ modules = [
@ -285,7 +133,49 @@
./hosts/${hostName}/hardware-configuration.nix ./hosts/${hostName}/hardware-configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
stylix.nixosModules.stylix stylix.nixosModules.stylix
commonModule ({ pkgs, ... }: {
programs.${shell}.enable = true;
system = { inherit stateVersion; };
networking = { inherit hostName; };
users.users.${user} = {
inherit group;
isNormalUser = true;
description = "Evie Litherland-Smith";
extraGroups = [ "networkmanager" "wheel" "video" ];
shell = pkgs.${shell};
initialHashedPassword =
"$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIANfkqd5lPTsSPU3SRYnAa1UjCYDmDeBTyzq5McmWlm6 xenia@Vanguard"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINI1dWlS16Keil0MGPWmMsBzx8F9ylfz+fRwxUr8/tZ/ ion"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDI44C35I2x9tqzeZDmIpbzmGJWXfATn/Wp5KzVRdlCi root@debian"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKMVEXJTqWkrpmvinPJGsSvome9bCd0CM4iu13aVG6UZ elitherl@Ronin"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ/ZSSCN5sqrA+tdoIZr5EUm5DRuBV4dQ7J+QBEtUwUU xenia@Northstar"
];
};
home-manager = {
inherit extraSpecialArgs;
useGlobalPkgs = true;
useUserPackages = true;
users.${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;
stylix.targets.xresources.enable = true;
xdg.userDirs = {
enable = true;
createDirectories = true;
extraConfig = {
XDG_PROJECTS_DIR = "${homeDirectory}/Projects";
};
};
};
};
})
] ++ systemModules ++ serviceModules; ] ++ systemModules ++ serviceModules;
}; };
in { in {
@ -297,7 +187,7 @@
system = "x86_64-linux"; system = "x86_64-linux";
in systemConfig { in systemConfig {
inherit hostName user system; inherit hostName user system;
systemModules = [ ]; systemModules = [ ./system/default.nix ];
serviceModules = [ serviceModules = [
# ./services/adguardhome/default.nix # ./services/adguardhome/default.nix
./services/gitea/default.nix ./services/gitea/default.nix
@ -310,7 +200,7 @@
./services/traefik/nextcloud.nix ./services/traefik/nextcloud.nix
# ./services/traefik/qbittorrent.nix # ./services/traefik/qbittorrent.nix
]; ];
homeModules = [ ./home/git.nix ./home/ssh.nix ]; homeModules = [ ./home/default.nix ];
}; };
Northstar = let Northstar = let

View file

@ -1,26 +1,9 @@
{ config, pkgs, catppuccin-themes, ... }: { config, lib, pkgs, catppuccin-themes, gitui, ... }:
{ {
imports = [ stylix.targets = {
./alacritty.nix fzf.enable = true;
./firefox.nix tmux.enable = true;
./fzf.nix
./git.nix
./media.nix
./pass.nix
./ssh.nix
./starship.nix
./tmux.nix
./zathura.nix
./hyprland/default.nix
./emacs/default.nix
./accounts/default.nix
./ferdium/default.nix
];
home.packages = with pkgs; [ dig silver-searcher gnumake ];
services.kdeconnect = {
enable = true;
indicator = true;
}; };
programs = { programs = {
bash.enable = true; bash.enable = true;
@ -37,6 +20,202 @@
enableBashIntegration = true; enableBashIntegration = true;
enableZshIntegration = true; enableZshIntegration = true;
}; };
fzf = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
git = {
enable = true;
package = pkgs.gitFull;
userName = "Evie Litherland-Smith";
userEmail = lib.mkDefault "evie@xenia.me.uk";
delta = {
enable = true;
options = {
blame-code-style = "syntax";
line-numbers = true;
navigate = true;
side-by-side = true;
syntax-theme = "Catppuccin";
zero-style = "dim syntax";
};
};
extraConfig = {
pull.rebase = false;
init.defaultBranch = "main";
credential.helper = "${pkgs.gitFull}/bin/git-credential-libsecret";
};
};
gitui = {
enable = true;
keyConfig = builtins.readFile "${gitui}/vim_style_key_config.ron";
theme = builtins.readFile catppuccin-themes.gitui;
};
bat = {
enable = true;
config.theme = "Catppuccin";
themes.Catppuccin = builtins.readFile catppuccin-themes.bat;
};
ssh = {
enable = true;
forwardAgent = true;
serverAliveInterval = 15;
serverAliveCountMax = 3;
controlMaster = "auto";
controlPersist = "10s";
extraConfig = ''
AddKeysToAgent=yes
SetEnv TERM=xterm-256color
'';
matchBlocks = {
"vanguard" = {
user = "xenia";
hostname = "192.168.1.166";
};
"legion" = {
user = "xenia";
hostname = "192.168.1.230";
};
"ionos" = {
user = "root";
hostname = "77.68.67.133";
};
"freia".hostname = "freia020.hpc.l";
"freia???" =
lib.hm.dag.entryAfter [ "freia" ] { hostname = "%h.hpc.l"; };
"heimdall".hostname = "heimdall003.jet.uk";
"heimdall???" =
lib.hm.dag.entryAfter [ "heimdall" ] { hostname = "%h.jet.uk"; };
"freia* heimdall*" = lib.hm.dag.entryAfter [
"freia"
"freia???"
"heimdall"
"heimdall???"
] {
user = "elitherl";
compression = true;
};
"git*".user = "git";
};
};
starship = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
settings = {
inherit (builtins.fromTOML
(builtins.readFile catppuccin-themes.starship))
palettes;
command_timeout = 1000;
add_newline = true;
palette = "catppuccin_macchiato";
character = {
success_symbol = "[[󱢠](green) ](maroon)";
error_symbol = "[](red)";
};
directory = {
truncation_length = 2;
fish_style_pwd_dir_length = 1;
read_only = " 󰉐";
style = "bold lavender";
truncate_to_repo = false;
before_repo_root_style = "bold lavender";
repo_root_style = "bold teal";
};
line_break.disabled = false;
git_branch = {
symbol = "󰘬";
only_attached = true;
ignore_branches = [ "master" "main" ];
};
git_commit = {
format = "[󰜘 $hash$tag]($style) ";
tag_symbol = "󰓹";
tag_disabled = false;
};
git_metrics.disabled = false;
hostname = {
ssh_only = true;
ssh_symbol = "󰢹 ";
style = "bold green";
};
localip.disabled = false;
memory_usage = {
disabled = false;
symbol = "󰍛 ";
};
nix_shell.symbol = "󱄅 ";
os = {
disabled = false;
format = "on [$symbol $name ]($style)";
style = "bold blue";
symbols = {
Alpine = " ";
Android = " ";
Arch = " ";
CentOS = " ";
Debian = " ";
EndeavourOS = " ";
Fedora = " ";
FreeBSD = " ";
Gentoo = " ";
Illumos = " ";
Linux = " ";
Macos = " ";
Manjaro = " ";
Mint = "󰣭 ";
NixOS = " ";
OpenBSD = " ";
openSUSE = " ";
Pop = " ";
Raspbian = " ";
Redhat = " ";
RedHatEnterprise = " ";
Solus = " ";
SUSE = " ";
Ubuntu = " ";
Unknown = " ";
Windows = " ";
};
};
python = {
symbol = "󰌠 ";
python_binary = "python3";
};
shell = {
disabled = false;
format = "using [$indicator ]($style)";
};
sudo = {
disabled = false;
symbol = "󰪋 ";
};
};
};
tmux = {
enable = true;
baseIndex = 1;
clock24 = true;
keyMode = "emacs";
mouse = true;
secureSocket = true;
sensibleOnTop = true;
shortcut = "Space";
terminal = "xterm-256color";
plugins = with pkgs.tmuxPlugins; [ yank tmux-fzf catppuccin ];
extraConfig = ''
# https://old.reddit.com/r/tmux/comments/mesrci/tmux_2_doesnt_seem_to_use_256_colors/
set -ga terminal-overrides ",*256col*,alacritty:Tc"
set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q'
set-environment -g COLORTERM "truecolor"
# easy-to-remember split pane commands
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
'';
};
zsh = { zsh = {
enable = true; enable = true;
enableAutosuggestions = true; enableAutosuggestions = true;

View file

@ -1,11 +0,0 @@
{ ... }:
{
stylix.targets.fzf.enable = true;
programs.fzf = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
}

View file

@ -1,36 +0,0 @@
{ lib, pkgs, catppuccin-themes, gitui, ... }: {
programs = {
git = {
enable = true;
package = pkgs.gitFull;
userName = "Evie Litherland-Smith";
userEmail = lib.mkDefault "evie@xenia.me.uk";
delta = {
enable = true;
options = {
blame-code-style = "syntax";
line-numbers = true;
navigate = true;
side-by-side = true;
syntax-theme = "Catppuccin";
zero-style = "dim syntax";
};
};
extraConfig = {
pull.rebase = false;
init.defaultBranch = "main";
credential.helper = "${pkgs.gitFull}/bin/git-credential-libsecret";
};
};
gitui = {
enable = true;
keyConfig = builtins.readFile "${gitui}/vim_style_key_config.ron";
theme = builtins.readFile catppuccin-themes.gitui;
};
bat = {
enable = true;
config.theme = "Catppuccin";
themes.Catppuccin = builtins.readFile catppuccin-themes.bat;
};
};
}

View file

@ -9,13 +9,6 @@
./anyrun.nix ./anyrun.nix
./gtk.nix ./gtk.nix
]; ];
home.packages = with pkgs; [
signal-desktop
remmina
libreoffice
zotero
minesweep-rs
];
programs.rofi = { programs.rofi = {
package = pkgs.rofi-wayland; package = pkgs.rofi-wayland;
terminal = "${pkgs.alacritty}/bin/alacritty"; terminal = "${pkgs.alacritty}/bin/alacritty";

8
home/kdeconnect.nix Normal file
View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
services.kdeconnect = {
enable = true;
indicator = true;
};
}

View file

@ -1,49 +0,0 @@
{ config, lib, pkgs, ... }:
{
home.packages = with pkgs; [ sshfs ];
programs = {
ssh = {
enable = true;
forwardAgent = true;
serverAliveInterval = 15;
serverAliveCountMax = 3;
controlMaster = "auto";
controlPersist = "10s";
extraConfig = ''
AddKeysToAgent=yes
SetEnv TERM=xterm-256color
'';
matchBlocks = {
"vanguard" = {
user = "xenia";
hostname = "192.168.1.166";
};
"legion" = {
user = "xenia";
hostname = "192.168.1.230";
};
"ionos" = {
user = "root";
hostname = "77.68.67.133";
};
"freia".hostname = "freia020.hpc.l";
"freia???" =
lib.hm.dag.entryAfter [ "freia" ] { hostname = "%h.hpc.l"; };
"heimdall".hostname = "heimdall003.jet.uk";
"heimdall???" =
lib.hm.dag.entryAfter [ "heimdall" ] { hostname = "%h.jet.uk"; };
"freia* heimdall*" = lib.hm.dag.entryAfter [
"freia"
"freia???"
"heimdall"
"heimdall???"
] {
user = "elitherl";
compression = true;
};
"git*".user = "git";
};
};
};
}

View file

@ -1,97 +0,0 @@
{ catppuccin-themes, ... }:
{
programs.starship = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
settings = {
inherit (builtins.fromTOML (builtins.readFile catppuccin-themes.starship))
palettes;
command_timeout = 1000;
add_newline = true;
palette = "catppuccin_macchiato";
character = {
success_symbol = "[[󱢠](green) ](maroon)";
error_symbol = "[](red)";
};
directory = {
truncation_length = 2;
fish_style_pwd_dir_length = 1;
read_only = " 󰉐";
style = "bold lavender";
truncate_to_repo = false;
before_repo_root_style = "bold lavender";
repo_root_style = "bold teal";
};
line_break.disabled = false;
git_branch = {
symbol = "󰘬";
only_attached = true;
ignore_branches = [ "master" "main" ];
};
git_commit = {
format = "[󰜘 $hash$tag]($style) ";
tag_symbol = "󰓹";
tag_disabled = false;
};
git_metrics.disabled = false;
hostname = {
ssh_only = true;
ssh_symbol = "󰢹 ";
style = "bold green";
};
localip.disabled = false;
memory_usage = {
disabled = false;
symbol = "󰍛 ";
};
nix_shell.symbol = "󱄅 ";
os = {
disabled = false;
format = "on [$symbol $name ]($style)";
style = "bold blue";
symbols = {
Alpine = " ";
Android = " ";
Arch = " ";
CentOS = " ";
Debian = " ";
EndeavourOS = " ";
Fedora = " ";
FreeBSD = " ";
Gentoo = " ";
Illumos = " ";
Linux = " ";
Macos = " ";
Manjaro = " ";
Mint = "󰣭 ";
NixOS = " ";
OpenBSD = " ";
openSUSE = " ";
Pop = " ";
Raspbian = " ";
Redhat = " ";
RedHatEnterprise = " ";
Solus = " ";
SUSE = " ";
Ubuntu = " ";
Unknown = " ";
Windows = " ";
};
};
python = {
symbol = "󰌠 ";
python_binary = "python3";
};
shell = {
disabled = false;
format = "using [$indicator ]($style)";
};
sudo = {
disabled = false;
symbol = "󰪋 ";
};
};
};
}

View file

@ -1,28 +0,0 @@
{ pkgs, ... }:
{
stylix.targets.tmux.enable = true;
programs.tmux = {
enable = true;
baseIndex = 1;
clock24 = true;
keyMode = "vi";
mouse = true;
secureSocket = true;
sensibleOnTop = true;
shortcut = "Space";
terminal = "xterm-256color";
plugins = with pkgs.tmuxPlugins; [ yank tmux-fzf catppuccin ];
extraConfig = ''
# https://old.reddit.com/r/tmux/comments/mesrci/tmux_2_doesnt_seem_to_use_256_colors/
set -ga terminal-overrides ",*256col*,alacritty:Tc"
set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q'
set-environment -g COLORTERM "truecolor"
# easy-to-remember split pane commands
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
'';
};
}

View file

@ -1,7 +1,7 @@
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ lib, ... }: { { config, lib, pkgs, ... }: {
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
@ -15,9 +15,12 @@
boot.initrd.luks.devices."luks-761eeb11-3091-4142-9232-4fb33165eccd".keyFile = boot.initrd.luks.devices."luks-761eeb11-3091-4142-9232-4fb33165eccd".keyFile =
"/crypto_keyfile.bin"; "/crypto_keyfile.bin";
environment.etc."ppp/options".text = '' environment = {
ipcp-accept-remote etc."ppp/options".text = ''
''; ipcp-accept-remote
'';
systemPackages = with pkgs; [ openfortivpn ];
};
services.syncthing.settings.folders = { services.syncthing.settings.folders = {
"Archive".enable = false; "Archive".enable = false;
"Books".enable = false; "Books".enable = false;

View file

@ -1,7 +1,6 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
{ {
home.packages = with pkgs; [ openfortivpn nomachine-client ];
programs = { programs = {
git.userEmail = "evie.litherland-smith@ukaea.uk"; git.userEmail = "evie.litherland-smith@ukaea.uk";
firefox.profiles.default.settings."browser.startup.homepage" = firefox.profiles.default.settings."browser.startup.homepage" =

View file

@ -1,7 +1,6 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
{ {
home.packages = with pkgs; [ nomachine-client ];
programs = { programs = {
git.userEmail = "evie.litherland-smith@ukaea.uk"; git.userEmail = "evie.litherland-smith@ukaea.uk";
firefox.profiles.default.settings."browser.startup.homepage" = firefox.profiles.default.settings."browser.startup.homepage" =

View file

@ -1,7 +1,6 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
home.packages = with pkgs; [ nomachine-client ];
xdg.configFile."hypr/extra.conf".text = '' xdg.configFile."hypr/extra.conf".text = ''
monitor=DP-1,highrr,0x0,1.00 monitor=DP-1,highrr,0x0,1.00
monitor=HDMI-A-1,highres,1920x325,1.00 monitor=HDMI-A-1,highres,1920x325,1.00

View file

@ -1,10 +1,11 @@
{ lib, user, group, ... }: { config, lib, pkgs, user, ... }:
let let
devices = [ "Legion" "Northstar" "Ronin" "Scorch" "Vanguard" ]; devices = [ "Legion" "Northstar" "Ronin" "Scorch" "Vanguard" ];
devicesWithPhone = devices ++ [ "Ion" ]; devicesWithPhone = devices ++ [ "Ion" ];
in { in {
services.syncthing = { services.syncthing = {
inherit user group; inherit user;
inherit (config.users.users.${user}) group;
enable = true; enable = true;
dataDir = lib.mkDefault "/home/${user}"; dataDir = lib.mkDefault "/home/${user}";
systemService = true; systemService = true;

76
system/default.nix Normal file
View file

@ -0,0 +1,76 @@
{ config, lib, pkgs, ... }:
let flakeURL = "git+https://git.xenia.me.uk/xenia/nixos.git?ref=main";
in {
nix = {
settings = {
experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true;
};
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
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"
];
networking = {
networkmanager.enable = true;
nameservers = [ "9.9.9.9" ];
};
environment = {
systemPackages = with pkgs; [
libsecret
git
neofetch
nitch
dig
silver-searcher
gnumake
];
localBinInPath = true;
shellAliases.rebuild = ''
sudo nixos-rebuild switch --flake "${flakeURL}" --refresh \
&& hyprctl reload \
&& doom sync -p
'';
};
console.keyMap = "uk";
programs.ssh.startAgent = true;
services.power-profiles-daemon.enable = true;
virtualisation.podman.enable = true;
time.timeZone = "Europe/London";
i18n = let locale = "en_GB.UTF-8";
in {
# Select internationalisation properties.
defaultLocale = locale;
extraLocaleSettings = {
LC_ADDRESS = locale;
LC_IDENTIFICATION = locale;
LC_MEASUREMENT = locale;
LC_MONETARY = locale;
LC_NAME = locale;
LC_NUMERIC = locale;
LC_PAPER = locale;
LC_TELEPHONE = locale;
LC_TIME = locale;
};
};
system.autoUpgrade = {
enable = true;
dates = "02:00";
allowReboot = false;
flake = flakeURL;
};
}

View file

@ -1,7 +1,7 @@
{ pkgs, ... }: { config, lib, pkgs, catppuccin-base16, ... }:
{ {
imports = [ ./firefox.nix ]; imports = [ ./default.nix ./firefox.nix ];
environment.systemPackages = with pkgs; environment.systemPackages = with pkgs;
with libsForQt5.qt5; [ with libsForQt5.qt5; [
dex dex
@ -16,7 +16,70 @@
protonvpn-cli protonvpn-cli
protonvpn-gui protonvpn-gui
qbittorrent qbittorrent
signal-desktop
remmina
libreoffice
zotero
minesweep-rs
nomachine-client
]; ];
stylix = {
autoEnable = false;
image = ./wallpapers/waves/cat-waves.png;
base16Scheme = "${catppuccin-base16}/base16/macchiato.yaml";
fonts = {
emoji = {
name = "Noto Color Emoji";
package = pkgs.noto-fonts-emoji;
};
monospace = {
name = "Fira Mono";
package = pkgs.fira-mono;
};
sansSerif = {
name = "Fira Sans";
package = pkgs.fira;
};
serif = {
name = "Fira Sans";
package = pkgs.fira;
};
};
homeManagerIntegration.followSystem = true;
targets = {
chromium.enable = true;
console.enable = true;
grub = {
enable = true;
useImage = true;
};
};
};
fonts = {
packages = with pkgs; [
fira
fira-mono
fira-code
(nerdfonts.override { fonts = [ "FiraCode" ]; })
dejavu_fonts
noto-fonts-emoji
font-awesome
material-symbols
emacs-all-the-icons-fonts
material-design-icons
weather-icons
vscode-extensions.file-icons.file-icons
];
fontconfig = {
enable = true;
defaultFonts = {
serif = [ "Fira Sans" "DejaVu Sans" ];
sansSerif = [ "Fira Sans" "DejaVu Sans" ];
monospace = [ "Fira Mono" "DejaVu Sans Mono" ];
emoji = [ "Noto Color Emoji" ];
};
};
};
security = { security = {
rtkit.enable = true; rtkit.enable = true;
pam.services.gtklock.enableGnomeKeyring = true; pam.services.gtklock.enableGnomeKeyring = true;
@ -46,9 +109,7 @@
}; };
}; };
}; };
console.keyMap = "uk";
programs = { programs = {
ssh.startAgent = true;
seahorse.enable = true; seahorse.enable = true;
dconf.enable = true; dconf.enable = true;
light.enable = true; light.enable = true;

View file

@ -2,6 +2,7 @@
{ {
imports = [ ./desktop.nix ./steam.nix ]; imports = [ ./desktop.nix ./steam.nix ];
programs.steam.gamescopeSession.enable = true;
services.greetd.settings = rec { services.greetd.settings = rec {
default_session.command = '' default_session.command = ''
gamescope\ gamescope\

View file

@ -1,7 +1,7 @@
{ pkgs, ... }: { config, lib, pkgs, ... }:
{ {
environment.systemPackages = with pkgs; [ prismlauncher discord ]; environment.systemPackages = with pkgs; [ prismlauncher ];
hardware = { hardware = {
opengl.driSupport32Bit = true; opengl.driSupport32Bit = true;
steam-hardware.enable = true; steam-hardware.enable = true;
@ -15,7 +15,7 @@
steam = { steam = {
enable = true; enable = true;
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
gamescopeSession.enable = true; gamescopeSession.enable = lib.mkDefault false;
}; };
}; };
} }

View file

Before

Width:  |  Height:  |  Size: 562 KiB

After

Width:  |  Height:  |  Size: 562 KiB

View file

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View file

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View file

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

View file

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View file

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View file

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 202 KiB

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View file

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View file

Before

Width:  |  Height:  |  Size: 125 KiB

After

Width:  |  Height:  |  Size: 125 KiB

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View file

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 146 KiB

View file

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

View file

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View file

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View file

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View file

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View file

Before

Width:  |  Height:  |  Size: 747 KiB

After

Width:  |  Height:  |  Size: 747 KiB

View file

Before

Width:  |  Height:  |  Size: 7 MiB

After

Width:  |  Height:  |  Size: 7 MiB

View file

Before

Width:  |  Height:  |  Size: 5.3 MiB

After

Width:  |  Height:  |  Size: 5.3 MiB

View file

Before

Width:  |  Height:  |  Size: 7.8 MiB

After

Width:  |  Height:  |  Size: 7.8 MiB

View file

Before

Width:  |  Height:  |  Size: 3.6 MiB

After

Width:  |  Height:  |  Size: 3.6 MiB

View file

Before

Width:  |  Height:  |  Size: 4.3 MiB

After

Width:  |  Height:  |  Size: 4.3 MiB

View file

Before

Width:  |  Height:  |  Size: 3.7 MiB

After

Width:  |  Height:  |  Size: 3.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1,000 KiB

After

Width:  |  Height:  |  Size: 1,000 KiB

View file

Before

Width:  |  Height:  |  Size: 3.9 MiB

After

Width:  |  Height:  |  Size: 3.9 MiB

View file

Before

Width:  |  Height:  |  Size: 4.8 MiB

After

Width:  |  Height:  |  Size: 4.8 MiB

View file

Before

Width:  |  Height:  |  Size: 4 MiB

After

Width:  |  Height:  |  Size: 4 MiB

View file

Before

Width:  |  Height:  |  Size: 4.3 MiB

After

Width:  |  Height:  |  Size: 4.3 MiB

View file

Before

Width:  |  Height:  |  Size: 4 MiB

After

Width:  |  Height:  |  Size: 4 MiB

View file

Before

Width:  |  Height:  |  Size: 5.1 MiB

After

Width:  |  Height:  |  Size: 5.1 MiB

View file

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 252 KiB

View file

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 254 KiB

View file

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 250 KiB

View file

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 255 KiB

View file

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 252 KiB

View file

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 249 KiB

View file

Before

Width:  |  Height:  |  Size: 253 KiB

After

Width:  |  Height:  |  Size: 253 KiB

View file

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 254 KiB

View file

Before

Width:  |  Height:  |  Size: 247 KiB

After

Width:  |  Height:  |  Size: 247 KiB

View file

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 255 KiB

View file

Before

Width:  |  Height:  |  Size: 253 KiB

After

Width:  |  Height:  |  Size: 253 KiB

View file

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 254 KiB

View file

Before

Width:  |  Height:  |  Size: 253 KiB

After

Width:  |  Height:  |  Size: 253 KiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View file

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 1 MiB

View file

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View file

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 1 MiB

View file

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View file

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View file

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 1 MiB

View file

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View file

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View file

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 1 MiB

View file

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 1 MiB

View file

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View file

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View file

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 1 MiB

View file

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Some files were not shown because too many files have changed in this diff Show more