Compare commits
No commits in common. "main" and "backup_pre_merge" have entirely different histories.
main
...
backup_pre
9
Makefile
9
Makefile
|
@ -1,11 +1,6 @@
|
||||||
.PHONY: default build flathub
|
.PHONY: build
|
||||||
|
|
||||||
HOST := $(shell hostname)
|
HOST := $(shell hostname)
|
||||||
|
|
||||||
default: build
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
nix build --no-link --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
nix build .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
||||||
|
|
||||||
flathub:
|
|
||||||
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
60
README.org
60
README.org
|
@ -1,62 +1,10 @@
|
||||||
#+title: README
|
#+title: README
|
||||||
#+author: Evie Litherland-Smith
|
#+author: Evie Litherland-Smith
|
||||||
#+email: evie@xenia.me.uk
|
#+email: evie@xenia.me.uk
|
||||||
My personal NixOS + home-manager configuration files.
|
System configuration files for NixOS.
|
||||||
|
|
||||||
To set up without cloning the repository (assuming an already running
|
Fairly minimal setup and installation, to be paired with [[https://git.xenia.me.uk/pixelifytica/home-manager.git][a
|
||||||
NixOS system), run:
|
home-manager config]] to get the full user setup.
|
||||||
#+begin_src bash
|
|
||||||
sudo nixos-rebuild switch --flake "git+https://git.xenia.me.uk/pixelifytica/nixos.git?ref=main"\#$(hostname)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Password store setup
|
Further reading:
|
||||||
** Transfer GPG key(s)
|
|
||||||
#+begin_src bash
|
|
||||||
# Export keys on existing machine
|
|
||||||
gpg -a --export > publickeys.asc
|
|
||||||
gpg -a --export-secret-keys > privatekeys.asc
|
|
||||||
# Import key on new machine
|
|
||||||
gpg --import privatekeys.asc; gpg --import publickeys.asc
|
|
||||||
# Edit (for each key) to set trust
|
|
||||||
gpg --edit-key evie@xenia.me.uk
|
|
||||||
#+end_src
|
|
||||||
** Clone password-store repository
|
|
||||||
#+begin_src bash
|
|
||||||
git clone https://git.xenia.me.uk/pixelifytica/pass $PASSWORD_STORE_DIR
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Email setup
|
|
||||||
** Passwords for mbsync
|
|
||||||
Run src_bash{mbsync-ensure-pass} to check for passwords required by
|
|
||||||
~mbsync~, and query for missing passwords.
|
|
||||||
|
|
||||||
Static app-specific passwords are stored in ~password-store~, fetch from
|
|
||||||
there to add to secret service.
|
|
||||||
** Proton
|
|
||||||
*** Bridge
|
|
||||||
Start Proton Mail Bridge application, if needed configure to store
|
|
||||||
using =SecretService= and log in. Application will auto-start with
|
|
||||||
desktop session.
|
|
||||||
|
|
||||||
Use password from Bridge for ~mbsync~.
|
|
||||||
** Outlook
|
|
||||||
*** Davmail
|
|
||||||
Run src_bash{davmail-setup} to automate this process.
|
|
||||||
|
|
||||||
On first run (or if token expires), stop systemd service and run manually to complete manual auth. Token will stay valid for a little while (no idea how long specifically).
|
|
||||||
#+begin_src bash
|
|
||||||
# Restart service to ensure ~/.davmail.properties exists
|
|
||||||
systemctl --user restart davmail.service
|
|
||||||
# Run to use manual authentication
|
|
||||||
systemctl --user stop davmail.service && davmail -notray ~/.davmail.properties
|
|
||||||
# Restart again so that service picks up available ports
|
|
||||||
systemctl --user restart davmail.service
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Flathub setup
|
|
||||||
#+begin_src bash
|
|
||||||
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Further reading:
|
|
||||||
- https://nixos.org/
|
- https://nixos.org/
|
||||||
|
|
19
configuration/Legion.nix
Normal file
19
configuration/Legion.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
../services/caddy.nix
|
||||||
|
../services/forgejo.nix
|
||||||
|
../services/grafana.nix
|
||||||
|
../services/minecraft.nix
|
||||||
|
../services/nix-serve.nix
|
||||||
|
../services/radicale.nix
|
||||||
|
../services/sshd.nix
|
||||||
|
../services/syncthing.nix
|
||||||
|
# ../services/znc.nix
|
||||||
|
];
|
||||||
|
boot.loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
users.mutableUsers = false;
|
||||||
|
system.autoUpgrade.operation = "switch";
|
||||||
|
}
|
1
configuration/Northstar.nix
Normal file
1
configuration/Northstar.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{...}: {imports = [./laptop.nix];}
|
19
configuration/Scorch.nix
Normal file
19
configuration/Scorch.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [./desktop.nix];
|
||||||
|
boot = {
|
||||||
|
loader.efi.efiSysMountPoint = "/boot/efi";
|
||||||
|
initrd = {
|
||||||
|
secrets = {"/crypto_keyfile.bin" = null;};
|
||||||
|
luks.devices."luks-47d34268-5100-4eba-b34d-220f4239c1cb" = {
|
||||||
|
device = "/dev/disk/by-uuid/47d34268-5100-4eba-b34d-220f4239c1cb";
|
||||||
|
keyFile = "/crypto_keyfile.bin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment = {
|
||||||
|
etc."ppp/options".text = ''
|
||||||
|
ipcp-accept-remote
|
||||||
|
'';
|
||||||
|
systemPackages = with pkgs; [openfortivpn samba];
|
||||||
|
};
|
||||||
|
}
|
20
configuration/Tone.nix
Normal file
20
configuration/Tone.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [./laptop.nix];
|
||||||
|
boot.initrd = {
|
||||||
|
secrets = {"/crypto_keyfile.bin" = null;};
|
||||||
|
luks.devices."luks-761eeb11-3091-4142-9232-4fb33165eccd" = {
|
||||||
|
device = "/dev/disk/by-uuid/761eeb11-3091-4142-9232-4fb33165eccd";
|
||||||
|
keyFile = "/crypto_keyfile.bin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment = {
|
||||||
|
etc."ppp/options".text = ''
|
||||||
|
ipcp-accept-remote
|
||||||
|
'';
|
||||||
|
systemPackages = with pkgs; [openfortivpn];
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
samba.enable = true;
|
||||||
|
hardware.bolt.enable = true;
|
||||||
|
};
|
||||||
|
}
|
22
configuration/Vanguard.nix
Normal file
22
configuration/Vanguard.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{config, ...}: {
|
||||||
|
imports = [./desktop.nix];
|
||||||
|
boot = {
|
||||||
|
initrd.kernelModules = ["amdgpu"];
|
||||||
|
extraModulePackages = with config.boot.kernelPackages; [v4l2loopback];
|
||||||
|
extraModprobeConfig = ''
|
||||||
|
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
hardware = {
|
||||||
|
opengl = {
|
||||||
|
driSupport = true;
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
|
steam-hardware.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
};
|
||||||
|
}
|
135
configuration/default.nix
Normal file
135
configuration/default.nix
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
iosevkaCustom,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
nix = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
cores = 0;
|
||||||
|
max-jobs = "auto";
|
||||||
|
trusted-users = ["root"];
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
auto-optimise-store = true;
|
||||||
|
};
|
||||||
|
channel.enable = true;
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
options = "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
optimise.automatic = true;
|
||||||
|
extraOptions = ''
|
||||||
|
keep-outputs = false
|
||||||
|
keep-derivations = false
|
||||||
|
min-free = ${toString (100 * 1024 * 1024)}
|
||||||
|
max-free = ${toString (1024 * 1024 * 1024)}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
system = {
|
||||||
|
stateVersion = "23.05";
|
||||||
|
autoUpgrade = {
|
||||||
|
enable = true;
|
||||||
|
persistent = true;
|
||||||
|
allowReboot = false;
|
||||||
|
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
||||||
|
dates = "02:00";
|
||||||
|
randomizedDelaySec = "45min";
|
||||||
|
flags = [
|
||||||
|
"--accept-flake-config"
|
||||||
|
"--option"
|
||||||
|
"extra-binary-caches"
|
||||||
|
"https://nix.xenia.me.uk"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
boot.loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
networking = {
|
||||||
|
networkmanager.enable = true;
|
||||||
|
firewall.enable = true;
|
||||||
|
nameservers = ["9.9.9.9"];
|
||||||
|
};
|
||||||
|
users.users.root.openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINI1dWlS16Keil0MGPWmMsBzx8F9ylfz+fRwxUr8/tZ/ ion"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC4M1zV3yLMMI1tYwdY9QDXJDlOBugm7UXKC+Xk89yHq pixelifytica@Vanguard"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICPypUUGVAdpl0SHrUDVw0RureuFNsljrXQvrf0uc055 pixelifytica@Northstar"
|
||||||
|
];
|
||||||
|
environment = {
|
||||||
|
pathsToLink = ["/share/zsh"];
|
||||||
|
sessionVariables = {
|
||||||
|
XDG_CONFIG_HOME = "$HOME/.config";
|
||||||
|
XDG_CACHE_HOME = "$HOME/.cache";
|
||||||
|
XDG_DATA_HOME = "$HOME/.local/share";
|
||||||
|
XDG_STATE_HOME = "$HOME/.local/state";
|
||||||
|
};
|
||||||
|
systemPackages = with pkgs; [
|
||||||
|
libsecret
|
||||||
|
coreutils-full
|
||||||
|
gnumake
|
||||||
|
git
|
||||||
|
file
|
||||||
|
zip
|
||||||
|
unzip
|
||||||
|
curl
|
||||||
|
wget
|
||||||
|
dig
|
||||||
|
wireguard-tools
|
||||||
|
(quickemu.override {qemu = qemu_full;})
|
||||||
|
];
|
||||||
|
localBinInPath = true;
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
command-not-found.enable = false;
|
||||||
|
ssh.startAgent = true;
|
||||||
|
nano = {
|
||||||
|
enable = true;
|
||||||
|
syntaxHighlight = true;
|
||||||
|
nanorc = ''
|
||||||
|
set nowrap
|
||||||
|
set tabstospaces
|
||||||
|
set tabsize 2
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
upower.enable = true;
|
||||||
|
power-profiles-daemon.enable = true;
|
||||||
|
system76-scheduler = {
|
||||||
|
enable = true;
|
||||||
|
useStockConfig = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
virtualisation.podman.enable = true;
|
||||||
|
time.timeZone = "Europe/London";
|
||||||
|
i18n.defaultLocale = "en_GB.UTF-8";
|
||||||
|
console = {
|
||||||
|
font = iosevkaCustom.names.iosevka-custom-nerdfont;
|
||||||
|
useXkbConfig = true;
|
||||||
|
};
|
||||||
|
fonts = {
|
||||||
|
packages = with pkgs;
|
||||||
|
with iosevkaCustom.packages; [
|
||||||
|
iosevka-custom-nerdfont
|
||||||
|
iosevka-custom-aile
|
||||||
|
(nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];}) # Status bar
|
||||||
|
emacs-all-the-icons-fonts # Emacs
|
||||||
|
weather-icons # Emacs
|
||||||
|
lmodern # LaTeX
|
||||||
|
noto-fonts-emoji # Emoji
|
||||||
|
];
|
||||||
|
fontconfig = {
|
||||||
|
enable = true;
|
||||||
|
defaultFonts = with iosevkaCustom.names; {
|
||||||
|
serif = [iosevka-custom-aile];
|
||||||
|
sansSerif = [iosevka-custom-aile];
|
||||||
|
monospace = [iosevka-custom-nerdfont];
|
||||||
|
emoji = ["Noto Color Emoji"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
58
configuration/desktop.nix
Normal file
58
configuration/desktop.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [./default.nix];
|
||||||
|
nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||||||
|
system.autoUpgrade.operation = "boot";
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
environment = {
|
||||||
|
plasma6 =
|
||||||
|
lib.mkIf config.services.desktopManager.plasma6.enable
|
||||||
|
{excludePackages = with pkgs.kdePackages; [plasma-browser-integration];};
|
||||||
|
systemPackages = with pkgs; [
|
||||||
|
xdg-utils
|
||||||
|
hunspell
|
||||||
|
hunspellDicts.en_GB-large
|
||||||
|
];
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
dconf.enable = true;
|
||||||
|
noisetorch.enable = true;
|
||||||
|
kdeconnect.enable = true;
|
||||||
|
gamescope = {
|
||||||
|
enable = true;
|
||||||
|
capSysNice = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
flatpak.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
alsa = {
|
||||||
|
enable = true;
|
||||||
|
support32Bit = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
xkb = {
|
||||||
|
layout = "gb";
|
||||||
|
variant = "";
|
||||||
|
options = "ctrl:nocaps";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
displayManager.sddm = {
|
||||||
|
enable = true;
|
||||||
|
wayland.enable = true;
|
||||||
|
};
|
||||||
|
desktopManager.plasma6 = {
|
||||||
|
enable = true;
|
||||||
|
enableQt5Integration = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,14 +1,8 @@
|
||||||
{
|
{...}: {
|
||||||
pkgs,
|
imports = [./desktop.nix];
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [ ./desktop.nix ];
|
|
||||||
environment.systemPackages = [ pkgs.acpi ];
|
|
||||||
powerManagement.enable = true;
|
powerManagement.enable = true;
|
||||||
networking.networkmanager.wifi.powersave = true;
|
|
||||||
services.auto-cpufreq = {
|
services.auto-cpufreq = {
|
||||||
enable = false; # TEMP, conflict with power-profiles-daemon
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
battery = {
|
battery = {
|
||||||
governor = "powersave";
|
governor = "powersave";
|
299
flake.lock
299
flake.lock
|
@ -1,318 +1,59 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"base16": {
|
"iosevka-custom": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"fromYaml": "fromYaml"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1732200724,
|
"lastModified": 1719045863,
|
||||||
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
|
"narHash": "sha256-J0RQ2aiAchRxNzl2jlvqFNpFnDW2GZ7QXp53y7fs4GU=",
|
||||||
"owner": "SenchoPens",
|
"ref": "refs/heads/main",
|
||||||
"repo": "base16.nix",
|
"rev": "db915e9a55cecdedac53a3cdba354dbc281938d9",
|
||||||
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
|
"revCount": 13,
|
||||||
"type": "github"
|
"type": "git",
|
||||||
|
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "SenchoPens",
|
"type": "git",
|
||||||
"repo": "base16.nix",
|
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-fish": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1622559957,
|
|
||||||
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
|
|
||||||
"owner": "tomyun",
|
|
||||||
"repo": "base16-fish",
|
|
||||||
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tomyun",
|
|
||||||
"repo": "base16-fish",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-helix": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1725860795,
|
|
||||||
"narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-helix",
|
|
||||||
"rev": "7f795bf75d38e0eea9fed287264067ca187b88a9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-helix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-vim": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731949548,
|
|
||||||
"narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-vim",
|
|
||||||
"rev": "61165b1632409bd55e530f3dbdd4477f011cadc6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-vim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": [
|
|
||||||
"stylix",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fromYaml": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731966426,
|
|
||||||
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
|
||||||
"owner": "SenchoPens",
|
|
||||||
"repo": "fromYaml",
|
|
||||||
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "SenchoPens",
|
|
||||||
"repo": "fromYaml",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gnome-shell": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1732369855,
|
|
||||||
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
|
|
||||||
"owner": "GNOME",
|
|
||||||
"repo": "gnome-shell",
|
|
||||||
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "GNOME",
|
|
||||||
"ref": "47.2",
|
|
||||||
"repo": "gnome-shell",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1734366194,
|
|
||||||
"narHash": "sha256-vykpJ1xsdkv0j8WOVXrRFHUAdp9NXHpxdnn1F4pYgSw=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "80b0fdf483c5d1cb75aaad909bd390d48673857f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "release-24.11",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1734600368,
|
"lastModified": 1717602782,
|
||||||
"narHash": "sha256-nbG9TijTMcfr+au7ZVbKpAhMJzzE2nQBYmRvSdXUD8g=",
|
"narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b47fd6fa00c6afca88b8ee46cfdb00e104f50bca",
|
"rev": "e8057b67ebf307f01bdcc8fba94d94f75039d1f6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-24.11",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733097829,
|
"lastModified": 1719838683,
|
||||||
"narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
|
"narHash": "sha256-Zw9rQjHz1ilNIimEXFeVa1ERNRBF8DoXDhLAZq5B4pE=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
|
"rev": "d032c1a6dfad4eedec7e35e91986becc699d7d69",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixos-24.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager",
|
"iosevka-custom": "iosevka-custom",
|
||||||
"nixpkgs": "nixpkgs",
|
|
||||||
"stylix": "stylix",
|
|
||||||
"treefmt-nix": "treefmt-nix"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"stylix": {
|
|
||||||
"inputs": {
|
|
||||||
"base16": "base16",
|
|
||||||
"base16-fish": "base16-fish",
|
|
||||||
"base16-helix": "base16-helix",
|
|
||||||
"base16-vim": "base16-vim",
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"gnome-shell": "gnome-shell",
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems",
|
|
||||||
"tinted-foot": "tinted-foot",
|
|
||||||
"tinted-kitty": "tinted-kitty",
|
|
||||||
"tinted-tmux": "tinted-tmux"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1734110444,
|
|
||||||
"narHash": "sha256-fp1iV2JldCSvz+7ODzXYUkQ+H7zyiWw5E0MQ4ILC4vw=",
|
|
||||||
"owner": "danth",
|
|
||||||
"repo": "stylix",
|
|
||||||
"rev": "9015d5d0d5d100f849129c43d257b827d300b089",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "danth",
|
|
||||||
"ref": "release-24.11",
|
|
||||||
"repo": "stylix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tinted-foot": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1726913040,
|
|
||||||
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "tinted-foot",
|
|
||||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "tinted-foot",
|
|
||||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tinted-kitty": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1716423189,
|
|
||||||
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "tinted-kitty",
|
|
||||||
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "tinted-kitty",
|
|
||||||
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tinted-tmux": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1729501581,
|
|
||||||
"narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "tinted-tmux",
|
|
||||||
"rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "tinted-tmux",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"treefmt-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1734704479,
|
|
||||||
"narHash": "sha256-MMi74+WckoyEWBRcg/oaGRvXC9BVVxDZNRMpL+72wBI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"rev": "65712f5af67234dad91a5a4baee986a8b62dbf8f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
197
flake.nix
197
flake.nix
|
@ -2,83 +2,136 @@
|
||||||
description = "Evie's machine configurations";
|
description = "Evie's machine configurations";
|
||||||
|
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
extra-substituters = [ "https://nix.xenia.me.uk" ];
|
extra-substituters = ["https://nix.xenia.me.uk"];
|
||||||
extra-trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ];
|
extra-trusted-public-keys = ["nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI="];
|
||||||
};
|
};
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||||
treefmt-nix.url = "github:numtide/treefmt-nix";
|
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
|
||||||
home-manager = {
|
};
|
||||||
url = "github:nix-community/home-manager/release-24.11";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
outputs = {
|
||||||
|
nixpkgs,
|
||||||
|
iosevka-custom,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
defaultSpecialArgs = {system ? "x86_64-linux", ...}: {
|
||||||
|
iosevkaCustom = {
|
||||||
|
packages = iosevka-custom.outputs.packages.${system};
|
||||||
|
names = iosevka-custom.outputs.names;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
stylix = {
|
defaultModules = {
|
||||||
url = "github:danth/stylix/release-24.11";
|
hostName ? "Atlas",
|
||||||
inputs = {
|
userName ? "pixelifytica",
|
||||||
nixpkgs.follows = "nixpkgs";
|
loginShell ? "zsh",
|
||||||
home-manager.follows = "home-manager";
|
...
|
||||||
|
}: [
|
||||||
|
./configuration/default.nix
|
||||||
|
./configuration/${hostName}.nix
|
||||||
|
./hardware-configuration/${hostName}.nix
|
||||||
|
({
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
networking = {inherit hostName;};
|
||||||
|
nix = {
|
||||||
|
settings.trusted-users = [userName];
|
||||||
|
registry = {
|
||||||
|
my-nixos = {
|
||||||
|
from = {
|
||||||
|
type = "indirect";
|
||||||
|
id = "my-nixos";
|
||||||
|
};
|
||||||
|
to = {
|
||||||
|
type = "git";
|
||||||
|
url = "https://git.xenia.me.uk/pixelifytica/nixos.git?ref=main";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
my-home-manager = {
|
||||||
|
from = {
|
||||||
|
type = "indirect";
|
||||||
|
id = "my-home-manager";
|
||||||
|
};
|
||||||
|
to = {
|
||||||
|
type = "git";
|
||||||
|
url = "https://git.xenia.me.uk/pixelifytica/home-manager.git?ref=main";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.${loginShell}.enable = true;
|
||||||
|
users.users.${userName} = {
|
||||||
|
shell = pkgs.${loginShell};
|
||||||
|
group = "users";
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Evie Litherland-Smith";
|
||||||
|
extraGroups = ["networkmanager" "wheel" "video" "input" "uinput"];
|
||||||
|
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
|
||||||
|
openssh = {inherit (config.users.users.root.openssh) authorizedKeys;};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
devShells.x86_64-linux.default = let
|
||||||
|
pkgs = import nixpkgs {system = "x86_64-linux";};
|
||||||
|
in
|
||||||
|
pkgs.mkShellNoCC {
|
||||||
|
packages = with pkgs; [nil pre-commit];
|
||||||
|
shellHook = "pre-commit install --install-hooks";
|
||||||
|
};
|
||||||
|
nixosConfigurations = {
|
||||||
|
## Server
|
||||||
|
Legion = nixpkgs.lib.nixosSystem rec {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = defaultSpecialArgs {inherit system;};
|
||||||
|
modules = defaultModules {
|
||||||
|
hostName = "Legion";
|
||||||
|
userName = "pixelifytica";
|
||||||
|
loginShell = "zsh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
## Personal
|
||||||
|
Northstar = nixpkgs.lib.nixosSystem rec {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = defaultSpecialArgs {inherit system;};
|
||||||
|
modules = defaultModules {
|
||||||
|
hostName = "Northstar";
|
||||||
|
userName = "pixelifytica";
|
||||||
|
loginShell = "zsh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Vanguard = nixpkgs.lib.nixosSystem rec {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = defaultSpecialArgs {inherit system;};
|
||||||
|
modules = defaultModules {
|
||||||
|
hostName = "Vanguard";
|
||||||
|
userName = "pixelifytica";
|
||||||
|
loginShell = "zsh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
## Work
|
||||||
|
Tone = nixpkgs.lib.nixosSystem rec {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = defaultSpecialArgs {inherit system;};
|
||||||
|
modules = defaultModules {
|
||||||
|
hostName = "Tone";
|
||||||
|
userName = "elitherl";
|
||||||
|
loginShell = "zsh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Scorch = nixpkgs.lib.nixosSystem rec {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = defaultSpecialArgs {inherit system;};
|
||||||
|
modules = defaultModules {
|
||||||
|
hostName = "Scorch";
|
||||||
|
userName = "elitherl";
|
||||||
|
loginShell = "zsh";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
|
||||||
inputs@{
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
treefmt-nix,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
treefmt = treefmt-nix.lib.evalModule nixpkgs.legacyPackages.x86_64-linux ./treefmt.nix;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
formatter.x86_64-linux = treefmt.config.build.wrapper;
|
|
||||||
checks.x86_64-linux.formatting = treefmt.config.build.check self;
|
|
||||||
nixosConfigurations = {
|
|
||||||
## Server
|
|
||||||
Legion = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs;
|
|
||||||
username = "pixelifytica";
|
|
||||||
hostName = "Legion";
|
|
||||||
};
|
|
||||||
modules = [ ./system/default.nix ];
|
|
||||||
};
|
|
||||||
## Personal
|
|
||||||
Vanguard = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs;
|
|
||||||
username = "pixelifytica";
|
|
||||||
hostName = "Vanguard";
|
|
||||||
};
|
|
||||||
modules = [ ./system/default.nix ];
|
|
||||||
};
|
|
||||||
Northstar = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs;
|
|
||||||
username = "pixelifytica";
|
|
||||||
hostName = "Northstar";
|
|
||||||
};
|
|
||||||
modules = [ ./system/default.nix ];
|
|
||||||
};
|
|
||||||
## Work
|
|
||||||
Tone = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs;
|
|
||||||
username = "elitherl";
|
|
||||||
hostName = "Tone";
|
|
||||||
};
|
|
||||||
modules = [ ./system/default.nix ];
|
|
||||||
};
|
|
||||||
Monarch = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs;
|
|
||||||
username = "elitherl";
|
|
||||||
hostName = "Monarch";
|
|
||||||
};
|
|
||||||
modules = [ ./system/default.nix ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,44 +1,32 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"nvme"
|
|
||||||
"usbhid"
|
|
||||||
"usb_storage"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" =
|
||||||
device = "/dev/disk/by-uuid/b9d4ba04-a867-4ca6-88f9-79dc6a982e94";
|
{ device = "/dev/disk/by-uuid/b9d4ba04-a867-4ca6-88f9-79dc6a982e94";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" =
|
||||||
device = "/dev/disk/by-uuid/8F05-4C3A";
|
{ device = "/dev/disk/by-uuid/8F05-4C3A";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
"fmask=0022"
|
};
|
||||||
"dmask=0022"
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/a10ee1da-3b0d-4f6b-b20a-d6a32ae1f668"; }
|
||||||
];
|
];
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ { device = "/dev/disk/by-uuid/a10ee1da-3b0d-4f6b-b20a-d6a32ae1f668"; } ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
@ -1,44 +1,34 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "rtsx_pci_sdmmc" ];
|
||||||
"nvme"
|
|
||||||
"xhci_pci"
|
|
||||||
"rtsx_pci_sdmmc"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" =
|
||||||
device = "/dev/disk/by-uuid/84b28760-3643-4ad8-9ff6-ff78b57067f8";
|
{ device = "/dev/disk/by-uuid/84b28760-3643-4ad8-9ff6-ff78b57067f8";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-d1062931-ee58-4848-adf9-09452daeb6eb".device =
|
boot.initrd.luks.devices."luks-d1062931-ee58-4848-adf9-09452daeb6eb".device = "/dev/disk/by-uuid/d1062931-ee58-4848-adf9-09452daeb6eb";
|
||||||
"/dev/disk/by-uuid/d1062931-ee58-4848-adf9-09452daeb6eb";
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" =
|
||||||
device = "/dev/disk/by-uuid/ABE3-88E7";
|
{ device = "/dev/disk/by-uuid/ABE3-88E7";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
"fmask=0022"
|
};
|
||||||
"dmask=0022"
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/ba43345c-a652-497f-84d0-86064805446b"; }
|
||||||
];
|
];
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ { device = "/dev/disk/by-uuid/ba43345c-a652-497f-84d0-86064805446b"; } ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
@ -1,24 +1,13 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules =
|
||||||
"xhci_pci"
|
[ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
"ahci"
|
|
||||||
"usb_storage"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
@ -36,7 +25,8 @@
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ { device = "/dev/disk/by-uuid/ff9627a7-820c-4628-a040-2b665688b893"; } ];
|
swapDevices =
|
||||||
|
[{ device = "/dev/disk/by-uuid/ff9627a7-820c-4628-a040-2b665688b893"; }];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
@ -47,5 +37,6 @@
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode =
|
||||||
|
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
|
@ -1,45 +1,33 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||||
"xhci_pci"
|
|
||||||
"thunderbolt"
|
|
||||||
"vmd"
|
|
||||||
"nvme"
|
|
||||||
"usbhid"
|
|
||||||
"usb_storage"
|
|
||||||
"sd_mod"
|
|
||||||
"rtsx_pci_sdmmc"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" =
|
||||||
device = "/dev/disk/by-uuid/44c11386-0af8-4954-93bc-963a8e071672";
|
{ device = "/dev/disk/by-uuid/44c11386-0af8-4954-93bc-963a8e071672";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-bf1eab3a-6d92-430d-a282-8dd4c9efe2c7".device =
|
boot.initrd.luks.devices."luks-bf1eab3a-6d92-430d-a282-8dd4c9efe2c7".device = "/dev/disk/by-uuid/bf1eab3a-6d92-430d-a282-8dd4c9efe2c7";
|
||||||
"/dev/disk/by-uuid/bf1eab3a-6d92-430d-a282-8dd4c9efe2c7";
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" =
|
||||||
device = "/dev/disk/by-uuid/85D5-B6EC";
|
{ device = "/dev/disk/by-uuid/85D5-B6EC";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ { device = "/dev/disk/by-uuid/e65e5e4d-2084-4e6b-9255-3b36cba1529f"; } ];
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/e65e5e4d-2084-4e6b-9255-3b36cba1529f"; }
|
||||||
|
];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
@ -1,52 +1,39 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" "sr_mod" ];
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"nvme"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
"sr_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" =
|
||||||
device = "/dev/disk/by-uuid/379a999a-0753-4cbf-b868-e275902f0f73";
|
{ device = "/dev/disk/by-uuid/379a999a-0753-4cbf-b868-e275902f0f73";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-0d50df5f-9456-4296-9156-f5b818e11552".device =
|
boot.initrd.luks.devices."luks-0d50df5f-9456-4296-9156-f5b818e11552".device = "/dev/disk/by-uuid/0d50df5f-9456-4296-9156-f5b818e11552";
|
||||||
"/dev/disk/by-uuid/0d50df5f-9456-4296-9156-f5b818e11552";
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" =
|
||||||
device = "/dev/disk/by-uuid/3297-A70D";
|
{ device = "/dev/disk/by-uuid/3297-A70D";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
"fmask=0022"
|
};
|
||||||
"dmask=0022"
|
|
||||||
|
fileSystems."/mnt/secondary" =
|
||||||
|
{ device = "/dev/disk/by-uuid/036f1fcb-0674-4ae5-a2fe-cb4f7ada001d";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/26a8690a-70f9-4701-b224-b212f76a7035"; }
|
||||||
];
|
];
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/mnt/secondary" = {
|
|
||||||
device = "/dev/disk/by-uuid/036f1fcb-0674-4ae5-a2fe-cb4f7ada001d";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ { device = "/dev/disk/by-uuid/26a8690a-70f9-4701-b224-b212f76a7035"; } ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
43
services/adguardhome.nix
Normal file
43
services/adguardhome.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.adguardhome = {
|
||||||
|
enable = true;
|
||||||
|
mutableSettings = false;
|
||||||
|
settings = rec {
|
||||||
|
http.address = "0.0.0.0:3200";
|
||||||
|
dns = {
|
||||||
|
bind_hosts = ["127.0.0.1" "192.168.1.230"];
|
||||||
|
bootstrap_dns = ["9.9.9.9" "149.112.112.10"];
|
||||||
|
ratelimit = 0;
|
||||||
|
safe_search.enabled = true;
|
||||||
|
rewrites = [
|
||||||
|
{
|
||||||
|
domain = "xenia.me.uk";
|
||||||
|
answer = "192.168.1.230";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "*.xenia.me.uk";
|
||||||
|
answer = "192.168.1.230";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
blocked_services.ids = [];
|
||||||
|
};
|
||||||
|
filtering = {inherit (dns) safe_search rewrites blocked_services;};
|
||||||
|
querylog.ignored = [
|
||||||
|
"discovery.syncthing.net"
|
||||||
|
"discovery-v6.syncthing.net"
|
||||||
|
"matrix.tchncs.de"
|
||||||
|
];
|
||||||
|
statistics = {inherit (querylog) ignored;};
|
||||||
|
};
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [53];
|
||||||
|
allowedUDPPorts = [53];
|
||||||
|
};
|
||||||
|
}
|
5
services/astroneer.nix
Normal file
5
services/astroneer.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [steamcmd];
|
||||||
|
networking.firewall.allowedTCPPorts = [8777];
|
||||||
|
services.caddy.virtualHosts."astro.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:8777";
|
||||||
|
}
|
|
@ -1,14 +1,10 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
{
|
networking.firewall.allowedTCPPorts = [80 443];
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
80
|
|
||||||
443
|
|
||||||
];
|
|
||||||
services.caddy = {
|
services.caddy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
email = "evie@xenia.me.uk";
|
email = "evie@xenia.me.uk";
|
||||||
virtualHosts."xenia.me.uk" = {
|
virtualHosts."xenia.me.uk" = {
|
||||||
serverAliases = [ "www.xenia.me.uk" ];
|
serverAliases = ["www.xenia.me.uk"];
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
file_server * {
|
file_server * {
|
||||||
root /var/www/xenia.me.uk/
|
root /var/www/xenia.me.uk/
|
||||||
|
@ -18,13 +14,7 @@
|
||||||
};
|
};
|
||||||
services.fail2ban = {
|
services.fail2ban = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ignoreIP = [
|
ignoreIP = ["127.0.0.1/8" "::1" "192.168.1.0/16"];
|
||||||
"127.0.0.1/8"
|
bantime-increment = {enable = true;};
|
||||||
"::1"
|
|
||||||
"192.168.1.0/16"
|
|
||||||
];
|
|
||||||
bantime-increment = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
21
services/forgejo.nix
Normal file
21
services/forgejo.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [./caddy.nix];
|
||||||
|
services = {
|
||||||
|
forgejo = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
ROOT_URL = "https://git.xenia.me.uk";
|
||||||
|
DOMAIN = "git.xenia.me.uk";
|
||||||
|
HTTP_ADDR = "127.0.0.1";
|
||||||
|
HTTP_PORT = 3100;
|
||||||
|
DISABLE_SSH = true;
|
||||||
|
};
|
||||||
|
ui = {DEFAULT_THEME = "forgejo-auto";};
|
||||||
|
admin = {DISABLE_REGULAR_ORG_CREATION = true;};
|
||||||
|
service = {DISABLE_REGISTRATION = true;};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
caddy.virtualHosts."git.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:3100";
|
||||||
|
};
|
||||||
|
}
|
22
services/gitea.nix
Normal file
22
services/gitea.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [./caddy.nix];
|
||||||
|
services.gitea = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
ROOT_URL = "https://git.xenia.me.uk";
|
||||||
|
DOMAIN = "git.xenia.me.uk";
|
||||||
|
HTTP_ADDR = "127.0.0.1";
|
||||||
|
HTTP_PORT = 3100;
|
||||||
|
DISABLE_SSH = true;
|
||||||
|
};
|
||||||
|
service.DISABLE_REGISTRATION = true;
|
||||||
|
ui = {
|
||||||
|
DEFAULT_THEME = "auto";
|
||||||
|
THEMES = "auto,gitea,arc-greenw,catppuccin-latte-rosewater,catppuccin-latte-flamingo,catppuccin-latte-pink,catppuccin-latte-mauve,catppuccin-latte-red,catppuccin-latte-maroon,catppuccin-latte-peach,catppuccin-latte-yellow,catppuccin-latte-green,catppuccin-latte-teal,catppuccin-latte-sky,catppuccin-latte-sapphire,catppuccin-latte-blue,catppuccin-latte-lavender,catppuccin-frappe-rosewater,catppuccin-frappe-flamingo,catppuccin-frappe-pink,catppuccin-frappe-mauve,catppuccin-frappe-red,catppuccin-frappe-maroon,catppuccin-frappe-peach,catppuccin-frappe-yellow,catppuccin-frappe-green,catppuccin-frappe-teal,catppuccin-frappe-sky,catppuccin-frappe-sapphire,catppuccin-frappe-blue,catppuccin-frappe-lavender,catppuccin-macchiato-rosewater,catppuccin-macchiato-flamingo,catppuccin-macchiato-pink,catppuccin-macchiato-mauve,catppuccin-macchiato-red,catppuccin-macchiato-maroon,catppuccin-macchiato-peach,catppuccin-macchiato-yellow,catppuccin-macchiato-green,catppuccin-macchiato-teal,catppuccin-macchiato-sky,catppuccin-macchiato-sapphire,catppuccin-macchiato-blue,catppuccin-macchiato-lavender,catppuccin-mocha-rosewater,catppuccin-mocha-flamingo,catppuccin-mocha-pink,catppuccin-mocha-mauve,catppuccin-mocha-red,catppuccin-mocha-maroon,catppuccin-mocha-peach,catppuccin-mocha-yellow,catppuccin-mocha-green,catppuccin-mocha-teal,catppuccin-mocha-sky,catppuccin-mocha-sapphire,catppuccin-mocha-blue,catppuccin-mocha-lavender";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
appName = "Gitea";
|
||||||
|
};
|
||||||
|
services.caddy.virtualHosts."git.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:3100";
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
{
|
imports = [./caddy.nix];
|
||||||
imports = [ ./caddy.nix ];
|
|
||||||
services.grafana = {
|
services.grafana = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -17,14 +16,14 @@
|
||||||
exporters = {
|
exporters = {
|
||||||
node = {
|
node = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enabledCollectors = [ "systemd" ];
|
enabledCollectors = ["systemd"];
|
||||||
port = 9002;
|
port = 9002;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
scrapeConfigs = [
|
scrapeConfigs = [
|
||||||
{
|
{
|
||||||
job_name = "legion";
|
job_name = "legion";
|
||||||
static_configs = [ { targets = [ "127.0.0.1:${toString exporters.node.port}" ]; } ];
|
static_configs = [{targets = ["127.0.0.1:${toString exporters.node.port}"];}];
|
||||||
}
|
}
|
||||||
# {
|
# {
|
||||||
# job_name = "minecraft";
|
# job_name = "minecraft";
|
||||||
|
@ -32,6 +31,5 @@
|
||||||
# }
|
# }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
services.caddy.virtualHosts."grafana.xenia.me.uk".extraConfig =
|
services.caddy.virtualHosts."grafana.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:3000";
|
||||||
"reverse_proxy http://localhost:3000";
|
|
||||||
}
|
}
|
|
@ -1,10 +1,8 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
|
||||||
baseUrl = "xenia.me.uk";
|
baseUrl = "xenia.me.uk";
|
||||||
port = 8008;
|
port = 8008;
|
||||||
in
|
in {
|
||||||
{
|
imports = [./caddy.nix];
|
||||||
imports = [ ./caddy.nix ];
|
|
||||||
services = {
|
services = {
|
||||||
matrix-synapse = {
|
matrix-synapse = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -14,26 +12,20 @@ in
|
||||||
listeners = [
|
listeners = [
|
||||||
{
|
{
|
||||||
inherit port;
|
inherit port;
|
||||||
bind_addresses = [
|
bind_addresses = ["127.0.0.1" "::1"];
|
||||||
"127.0.0.1"
|
|
||||||
"::1"
|
|
||||||
];
|
|
||||||
type = "http";
|
type = "http";
|
||||||
tls = false;
|
tls = false;
|
||||||
x_forwarded = true;
|
x_forwarded = true;
|
||||||
resources = [
|
resources = [
|
||||||
{
|
{
|
||||||
names = [
|
names = ["client" "federation"];
|
||||||
"client"
|
|
||||||
"federation"
|
|
||||||
];
|
|
||||||
compress = true;
|
compress = true;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
extraConfigFiles = [ "/run/secrets/matrix-shared-secret" ];
|
extraConfigFiles = ["/run/secrets/matrix-shared-secret"];
|
||||||
};
|
};
|
||||||
caddy.virtualHosts."xenia.me.uk".extraConfig = ''
|
caddy.virtualHosts."xenia.me.uk".extraConfig = ''
|
||||||
header /.well-known/matrix/* Content-Type application/json
|
header /.well-known/matrix/* Content-Type application/json
|
25
services/minecraft.nix
Normal file
25
services/minecraft.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{config, ...}: {
|
||||||
|
services.minecraft-server = {
|
||||||
|
enable = true;
|
||||||
|
eula = true;
|
||||||
|
openFirewall = true;
|
||||||
|
declarative = true;
|
||||||
|
whitelist = {
|
||||||
|
"pixelifytica" = "b1848d60-4ddd-4fa4-a328-fb269910b6ae";
|
||||||
|
"HomeInTheClouds" = "d49f0aee-f217-477b-9516-9d5906f7fc87";
|
||||||
|
};
|
||||||
|
serverProperties = {
|
||||||
|
server-port = 25565;
|
||||||
|
difficulty = "easy";
|
||||||
|
gamemode = "survival";
|
||||||
|
force-gamemode = true;
|
||||||
|
max-players = 10;
|
||||||
|
# level-seed = 238902389203;
|
||||||
|
motd = "NixOS Minecraft server!";
|
||||||
|
white-list = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Caddy forwarding
|
||||||
|
services.caddy.virtualHosts."craft.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:${toString config.services.minecraft-server.serverProperties.server-port}";
|
||||||
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
{
|
imports = [./caddy.nix];
|
||||||
imports = [ ./caddy.nix ];
|
environment.systemPackages = with pkgs; [ffmpeg];
|
||||||
environment.systemPackages = with pkgs; [ ffmpeg ];
|
|
||||||
services = {
|
services = {
|
||||||
navidrome = {
|
navidrome = {
|
||||||
enable = true;
|
enable = true;
|
9
services/nix-serve.nix
Normal file
9
services/nix-serve.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{config, ...}: {
|
||||||
|
imports = [./caddy.nix];
|
||||||
|
services.nix-serve = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
secretKeyFile = "/root/nix-serve.key";
|
||||||
|
};
|
||||||
|
services.caddy.virtualHosts."nix.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:${toString config.services.nix-serve.port}";
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
{
|
imports = [./caddy.nix];
|
||||||
imports = [ ./caddy.nix ];
|
|
||||||
services.ntfy-sh = {
|
services.ntfy-sh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
|
@ -1,11 +1,9 @@
|
||||||
{ config, ... }:
|
{config, ...}: {
|
||||||
{
|
imports = [./caddy.nix];
|
||||||
imports = [ ./caddy.nix ];
|
|
||||||
services.owncast = {
|
services.owncast = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 9090;
|
port = 9090;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
services.caddy.virtualHosts."stream.xenia.me.uk".extraConfig =
|
services.caddy.virtualHosts."stream.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:${config.services.owncast.port}";
|
||||||
"reverse_proxy http://localhost:${config.services.owncast.port}";
|
|
||||||
}
|
}
|
21
services/radicale.nix
Normal file
21
services/radicale.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{...}: let
|
||||||
|
port = "5232";
|
||||||
|
in {
|
||||||
|
services.radicale = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
hosts = ["0.0.0.0:${port}"];
|
||||||
|
};
|
||||||
|
auth = {
|
||||||
|
type = "htpasswd";
|
||||||
|
htpasswd_filename = "/etc/radicale/users";
|
||||||
|
delay = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# rights = {};
|
||||||
|
};
|
||||||
|
services.caddy.virtualHosts."cal.xenia.me.uk".extraConfig = ''
|
||||||
|
reverse_proxy http://localhost:${port}
|
||||||
|
'';
|
||||||
|
}
|
|
@ -1,8 +1,7 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
{
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ports = [ 22 ];
|
ports = [22];
|
||||||
settings = {
|
settings = {
|
||||||
UseDns = true;
|
UseDns = true;
|
||||||
PermitRootLogin = "no";
|
PermitRootLogin = "no";
|
|
@ -1,14 +1,7 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
devices = ["Ion" "Legion" "Northstar" "Vanguard"];
|
||||||
devices = [
|
in {
|
||||||
"Ion"
|
imports = [./caddy.nix];
|
||||||
"Legion"
|
|
||||||
"Northstar"
|
|
||||||
"Vanguard"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [ ./caddy.nix ];
|
|
||||||
services.syncthing = {
|
services.syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemService = true;
|
systemService = true;
|
||||||
|
@ -19,10 +12,16 @@ in
|
||||||
devices = {
|
devices = {
|
||||||
"Ion".id = "7DD4NPH-6T2ET5A-4FCLFWW-CS6UR2W-IO5XQXC-DM5B2Q4-6X7DGU2-UKKVEAB";
|
"Ion".id = "7DD4NPH-6T2ET5A-4FCLFWW-CS6UR2W-IO5XQXC-DM5B2Q4-6X7DGU2-UKKVEAB";
|
||||||
"Legion".id = "XIJ4CPX-3USDOFM-JLKWEPP-J7MEVKX-LJ6HCCS-YZNHGGC-GDSMZPD-TTVYNAZ";
|
"Legion".id = "XIJ4CPX-3USDOFM-JLKWEPP-J7MEVKX-LJ6HCCS-YZNHGGC-GDSMZPD-TTVYNAZ";
|
||||||
"Northstar".id = "2GDDHJC-MIT5RCN-YR4ZQ4M-VYPP5NJ-UKMQDCN-RCCF7AK-WG5AHXU-4KINIQX";
|
"Northstar".id = "W7JNTCJ-ESF4WJS-ZXZGV2X-OVL2BXY-6R7IYV4-GBABAQT-7J55XTZ-4QJXXA7";
|
||||||
"Vanguard".id = "UT6YVRQ-K6UVH3V-XMAFNO6-TN3QIIN-5GBGPST-QFJJTSJ-SCKBJGP-PQBZVQW";
|
"Vanguard".id = "YELFAIP-4VBWPRX-CB7RNJD-RPBQ6KN-CGTMIBO-FK7EPTH-ZXYS6AF-C6WKOQT";
|
||||||
};
|
};
|
||||||
folders = {
|
folders = {
|
||||||
|
"Sync" = {
|
||||||
|
inherit devices;
|
||||||
|
id = "fn9cr-ncfas";
|
||||||
|
path = "~/Sync";
|
||||||
|
ignorePerms = true;
|
||||||
|
};
|
||||||
"Music" = {
|
"Music" = {
|
||||||
inherit devices;
|
inherit devices;
|
||||||
id = "munzw-vnxhl";
|
id = "munzw-vnxhl";
|
||||||
|
@ -41,30 +40,6 @@ in
|
||||||
path = "~/Videos";
|
path = "~/Videos";
|
||||||
ignorePerms = true;
|
ignorePerms = true;
|
||||||
};
|
};
|
||||||
"Models" = {
|
|
||||||
inherit devices;
|
|
||||||
id = "hcvfl-qspqe";
|
|
||||||
path = "~/Models";
|
|
||||||
ignorePerms = true;
|
|
||||||
};
|
|
||||||
"Documents" = {
|
|
||||||
inherit devices;
|
|
||||||
id = "4bxk7-zkrt2";
|
|
||||||
path = "~/Documents/sync";
|
|
||||||
ignorePerms = true;
|
|
||||||
};
|
|
||||||
"Books" = {
|
|
||||||
inherit devices;
|
|
||||||
id = "5zaud-r3rtt";
|
|
||||||
path = "~/Documents/books";
|
|
||||||
ignorePerms = true;
|
|
||||||
};
|
|
||||||
"ROMs" = {
|
|
||||||
inherit devices;
|
|
||||||
id = "xjbwf-b6qgd";
|
|
||||||
path = "~/Games/ROMs";
|
|
||||||
ignorePerms = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -1,6 +1,5 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
{
|
environment.systemPackages = with pkgs; [tmux];
|
||||||
environment.systemPackages = with pkgs; [ tmux ];
|
|
||||||
services.terraria = {
|
services.terraria = {
|
||||||
enable = true;
|
enable = true;
|
||||||
maxPlayers = 10;
|
maxPlayers = 10;
|
|
@ -1,15 +1,12 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
{
|
|
||||||
services.znc = {
|
services.znc = {
|
||||||
enable = true;
|
enable = true;
|
||||||
mutable = false;
|
mutable = false;
|
||||||
useLegacyConfig = false;
|
useLegacyConfig = false;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
config = {
|
config = {
|
||||||
LoadModule = [ "adminlog" ];
|
LoadModule = ["adminlog"];
|
||||||
Listener.l = {
|
Listener.l = {Port = 6697;};
|
||||||
Port = 6697;
|
|
||||||
};
|
|
||||||
User.pixelifytica = {
|
User.pixelifytica = {
|
||||||
Admin = true;
|
Admin = true;
|
||||||
Pass.password = {
|
Pass.password = {
|
||||||
|
@ -21,7 +18,7 @@
|
||||||
liberachat = {
|
liberachat = {
|
||||||
Server = "irc.libera.chat +6697";
|
Server = "irc.libera.chat +6697";
|
||||||
Nick = "pixelifytica";
|
Nick = "pixelifytica";
|
||||||
Chan = { };
|
Chan = {};
|
||||||
JoinDelay = 2;
|
JoinDelay = 2;
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -1,29 +0,0 @@
|
||||||
{ lib, username, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./services/adguardhome.nix
|
|
||||||
./services/caddy.nix
|
|
||||||
./services/forgejo.nix
|
|
||||||
./services/grafana.nix
|
|
||||||
./services/home-assistant.nix
|
|
||||||
./services/nix-serve.nix
|
|
||||||
./services/sshd.nix
|
|
||||||
./services/syncthing.nix
|
|
||||||
./services/xandikos.nix
|
|
||||||
# ./services/minecraft.nix
|
|
||||||
./services/satisfactory/default.nix
|
|
||||||
];
|
|
||||||
boot.loader = {
|
|
||||||
systemd-boot.enable = true;
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
imports = [ ./home/emacs/default.nix ];
|
|
||||||
services.emacs.enable = false;
|
|
||||||
home.stateVersion = "23.05";
|
|
||||||
};
|
|
||||||
system.stateVersion = "23.05";
|
|
||||||
users.mutableUsers = false;
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
networking.nameservers = lib.mkForce [ "0.0.0.0" ];
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{ pkgs, username, ... }:
|
|
||||||
{
|
|
||||||
# nixpkgs.config.kodi.enableAdvancedLauncher = true;
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
desktopManager.kodi = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.kodi.withPackages (
|
|
||||||
kp: with kp; [
|
|
||||||
jellyfin
|
|
||||||
youtube
|
|
||||||
netflix
|
|
||||||
]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
displayManager = {
|
|
||||||
lightdm.greeter.enable = false;
|
|
||||||
autoLogin = {
|
|
||||||
enable = true;
|
|
||||||
user = username;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
networking.firewall = {
|
|
||||||
allowedTCPPorts = [ 8080 ];
|
|
||||||
allowedUDPPorts = [ 8080 ];
|
|
||||||
};
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
home.stateVersion = null;
|
|
||||||
};
|
|
||||||
system.stateVersion = null;
|
|
||||||
users.mutableUsers = false;
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
{ pkgs, username, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./laptop.nix
|
|
||||||
./work.nix
|
|
||||||
];
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
home.stateVersion = "23.05";
|
|
||||||
wayland.windowManager.hyprland.settings.monitor = [
|
|
||||||
"eDP-1,preferred,auto,1.25"
|
|
||||||
"desc:Dell Inc. DELL P3223QE CCG8YN3,preferred,auto-left,1.5"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
boot.initrd = {
|
|
||||||
secrets = {
|
|
||||||
"/crypto_keyfile.bin" = null;
|
|
||||||
};
|
|
||||||
luks.devices."luks-761eeb11-3091-4142-9232-4fb33165eccd" = {
|
|
||||||
device = "/dev/disk/by-uuid/761eeb11-3091-4142-9232-4fb33165eccd";
|
|
||||||
keyFile = "/crypto_keyfile.bin";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
system.stateVersion = "23.05";
|
|
||||||
environment = {
|
|
||||||
etc."ppp/options".text = ''
|
|
||||||
ipcp-accept-remote
|
|
||||||
'';
|
|
||||||
systemPackages = with pkgs; [ openfortivpn ];
|
|
||||||
};
|
|
||||||
services.hardware.bolt.enable = true;
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{ username, ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./laptop.nix ];
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
home.stateVersion = "23.05";
|
|
||||||
wayland.windowManager.hyprland.settings.monitor = [ "eDP-1,preferred,auto,1.25" ];
|
|
||||||
};
|
|
||||||
system.stateVersion = "23.05";
|
|
||||||
}
|
|
|
@ -1,61 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
username,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./desktop.nix
|
|
||||||
./work.nix
|
|
||||||
];
|
|
||||||
home-manager.users.${username} =
|
|
||||||
{ config, ... }:
|
|
||||||
{
|
|
||||||
home.stateVersion = "23.05";
|
|
||||||
wayland.windowManager.hyprland.settings.monitor = [
|
|
||||||
"desc:Dell Inc. DELL P3223QE CCG8YN3,preferred,auto,1.5"
|
|
||||||
];
|
|
||||||
systemd.user.services.mount-onedrive =
|
|
||||||
let
|
|
||||||
target = "${config.home.homeDirectory}/OneDrive";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
Unit = {
|
|
||||||
Description = "Mount OneDrive to local directory";
|
|
||||||
After = [
|
|
||||||
"network-online.target"
|
|
||||||
"hyprland-session.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "notify";
|
|
||||||
ExecStartPre = "/usr/bin/env mkdir -p ${target}";
|
|
||||||
ExecStart = "${pkgs.rclone}/bin/rclone --config=${config.xdg.configHome}/rclone/rclone.conf --vfs-cache-mode writes --ignore-checksum mount \"OneDrive:\" ${target}";
|
|
||||||
ExecStop = "/bin/fusermount -u ${target}";
|
|
||||||
};
|
|
||||||
Install.WantedBy = [ "default.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
boot = {
|
|
||||||
loader.efi.efiSysMountPoint = "/boot/efi";
|
|
||||||
initrd = {
|
|
||||||
secrets = {
|
|
||||||
"/crypto_keyfile.bin" = null;
|
|
||||||
};
|
|
||||||
luks.devices."luks-47d34268-5100-4eba-b34d-220f4239c1cb" = {
|
|
||||||
device = "/dev/disk/by-uuid/47d34268-5100-4eba-b34d-220f4239c1cb";
|
|
||||||
keyFile = "/crypto_keyfile.bin";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
system.stateVersion = "23.05";
|
|
||||||
environment = {
|
|
||||||
etc."ppp/options".text = ''
|
|
||||||
ipcp-accept-remote
|
|
||||||
'';
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
openfortivpn
|
|
||||||
samba
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
username,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./desktop.nix
|
|
||||||
./steam.nix
|
|
||||||
];
|
|
||||||
home-manager.users.${username} = {
|
|
||||||
home = {
|
|
||||||
stateVersion = "23.05";
|
|
||||||
packages = with pkgs; [
|
|
||||||
helvum
|
|
||||||
prusa-slicer
|
|
||||||
blender
|
|
||||||
freecad
|
|
||||||
openscad
|
|
||||||
kicad-small
|
|
||||||
wineWowPackages.waylandFull
|
|
||||||
winetricks
|
|
||||||
lutris
|
|
||||||
cartridges
|
|
||||||
prismlauncher
|
|
||||||
];
|
|
||||||
};
|
|
||||||
programs.obs-studio = {
|
|
||||||
enable = true;
|
|
||||||
plugins = with pkgs.obs-studio-plugins; [
|
|
||||||
wlrobs
|
|
||||||
obs-vkcapture
|
|
||||||
obs-pipewire-audio-capture
|
|
||||||
input-overlay
|
|
||||||
];
|
|
||||||
};
|
|
||||||
wayland.windowManager.hyprland.settings.monitor = [
|
|
||||||
"desc:Acer Technologies ED270R TJMEE0043W01,1920x1080@144,0x140,1.0,vrr,2"
|
|
||||||
"desc:Microstep MSI G27CQ4 E2,2560x1440@144,1920x0,1.25,vrr,2"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
boot = {
|
|
||||||
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
|
||||||
extraModprobeConfig = ''
|
|
||||||
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
hardware = {
|
|
||||||
amdgpu = {
|
|
||||||
initrd.enable = true;
|
|
||||||
opencl.enable = true;
|
|
||||||
};
|
|
||||||
graphics = {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
system.stateVersion = "23.05";
|
|
||||||
}
|
|
|
@ -1,237 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
username,
|
|
||||||
hostName,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
inputs.stylix.nixosModules.stylix
|
|
||||||
./${hostName}.nix
|
|
||||||
./hardware-configuration/${hostName}.nix
|
|
||||||
];
|
|
||||||
nix = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.nixVersions.latest;
|
|
||||||
settings = {
|
|
||||||
cores = 0;
|
|
||||||
max-jobs = "auto";
|
|
||||||
trusted-users = [
|
|
||||||
"root"
|
|
||||||
username
|
|
||||||
];
|
|
||||||
experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
auto-optimise-store = true;
|
|
||||||
substituters = [ "https://nix.xenia.me.uk" ];
|
|
||||||
trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ];
|
|
||||||
};
|
|
||||||
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
|
||||||
channel.enable = true;
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
options = "--delete-older-than 3d";
|
|
||||||
};
|
|
||||||
optimise.automatic = true;
|
|
||||||
registry.my-nixos = {
|
|
||||||
from = {
|
|
||||||
type = "indirect";
|
|
||||||
id = "my-nixos";
|
|
||||||
};
|
|
||||||
to = {
|
|
||||||
type = "git";
|
|
||||||
url = "https://git.xenia.me.uk/pixelifytica/nixos.git?ref=main";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraOptions = ''
|
|
||||||
keep-outputs = false
|
|
||||||
keep-derivations = false
|
|
||||||
min-free = ${toString (100 * 1024 * 1024)}
|
|
||||||
max-free = ${toString (1024 * 1024 * 1024)}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
nixpkgs.config.allowUnfreePredicate =
|
|
||||||
pkg:
|
|
||||||
builtins.elem (lib.getName pkg) [
|
|
||||||
"steam"
|
|
||||||
"steam-unwrapped"
|
|
||||||
"steam-original"
|
|
||||||
"steam-run"
|
|
||||||
"steamcmd"
|
|
||||||
"nomachine-client"
|
|
||||||
];
|
|
||||||
system.autoUpgrade = {
|
|
||||||
enable = true;
|
|
||||||
persistent = true;
|
|
||||||
allowReboot = false;
|
|
||||||
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
|
||||||
dates = "02:00";
|
|
||||||
flags = [
|
|
||||||
"--option"
|
|
||||||
"extra-binary-caches"
|
|
||||||
"https://nix.xenia.me.uk"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.services = lib.mkIf config.system.autoUpgrade.enable {
|
|
||||||
nixos-upgrade.serviceConfig = {
|
|
||||||
CPUQuota = "75%";
|
|
||||||
CPUWeight = 20;
|
|
||||||
IOWeight = 20;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
boot.loader = {
|
|
||||||
systemd-boot.enable = true;
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
networking = {
|
|
||||||
inherit hostName;
|
|
||||||
firewall.enable = true;
|
|
||||||
nameservers = [ "9.9.9.9" ];
|
|
||||||
};
|
|
||||||
users.users =
|
|
||||||
let
|
|
||||||
authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINI1dWlS16Keil0MGPWmMsBzx8F9ylfz+fRwxUr8/tZ/ ion"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC4M1zV3yLMMI1tYwdY9QDXJDlOBugm7UXKC+Xk89yHq pixelifytica@Vanguard"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICPypUUGVAdpl0SHrUDVw0RureuFNsljrXQvrf0uc055 pixelifytica@Northstar"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
root.openssh = {
|
|
||||||
inherit authorizedKeys;
|
|
||||||
};
|
|
||||||
${username} = {
|
|
||||||
isNormalUser = true;
|
|
||||||
group = "users";
|
|
||||||
description = "Evie Litherland-Smith";
|
|
||||||
extraGroups = [
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
"video"
|
|
||||||
"input"
|
|
||||||
"uinput"
|
|
||||||
"dialout"
|
|
||||||
"gamemode"
|
|
||||||
];
|
|
||||||
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
|
|
||||||
openssh = {
|
|
||||||
inherit authorizedKeys;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home-manager = {
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
backupFileExtension = "backup";
|
|
||||||
users.${username} = {
|
|
||||||
imports = [
|
|
||||||
./home/shell/default.nix
|
|
||||||
./home/scripts/default.nix
|
|
||||||
];
|
|
||||||
home = {
|
|
||||||
inherit username;
|
|
||||||
homeDirectory = "/home/${username}";
|
|
||||||
};
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
};
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit inputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment = {
|
|
||||||
sessionVariables = {
|
|
||||||
XDG_CONFIG_HOME = "$HOME/.config";
|
|
||||||
XDG_CACHE_HOME = "$HOME/.cache";
|
|
||||||
XDG_DATA_HOME = "$HOME/.local/share";
|
|
||||||
XDG_STATE_HOME = "$HOME/.local/state";
|
|
||||||
};
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
coreutils-full
|
|
||||||
gnumake
|
|
||||||
git
|
|
||||||
file
|
|
||||||
zip
|
|
||||||
unzip
|
|
||||||
p7zip
|
|
||||||
curl
|
|
||||||
wget
|
|
||||||
dig
|
|
||||||
wireguard-tools
|
|
||||||
librespeed-cli
|
|
||||||
quickemu
|
|
||||||
distrobox
|
|
||||||
];
|
|
||||||
localBinInPath = true;
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
command-not-found.enable = false;
|
|
||||||
ssh.startAgent = true;
|
|
||||||
nano = {
|
|
||||||
enable = true;
|
|
||||||
syntaxHighlight = true;
|
|
||||||
nanorc = ''
|
|
||||||
set nowrap
|
|
||||||
set tabstospaces
|
|
||||||
set tabsize 2
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
upower.enable = true;
|
|
||||||
power-profiles-daemon.enable = true;
|
|
||||||
system76-scheduler = {
|
|
||||||
enable = true;
|
|
||||||
useStockConfig = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
virtualisation.podman.enable = true;
|
|
||||||
location = {
|
|
||||||
latitude = 51.7;
|
|
||||||
longitude = -1.2;
|
|
||||||
provider = "manual";
|
|
||||||
};
|
|
||||||
time.timeZone = "Europe/London";
|
|
||||||
i18n.defaultLocale = "en_GB.UTF-8";
|
|
||||||
console.useXkbConfig = true;
|
|
||||||
stylix = {
|
|
||||||
enable = true;
|
|
||||||
image = ./wallpapers/default.jpg;
|
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/onedark.yaml";
|
|
||||||
polarity = config.lib.stylix.scheme.variant;
|
|
||||||
opacity = {
|
|
||||||
applications = 0.9;
|
|
||||||
desktop = 0.7;
|
|
||||||
popups = 0.5;
|
|
||||||
terminal = 0.9;
|
|
||||||
};
|
|
||||||
cursor = {
|
|
||||||
package = pkgs.volantes-cursors;
|
|
||||||
name = "volantes_cursors";
|
|
||||||
size = 32;
|
|
||||||
};
|
|
||||||
fonts = {
|
|
||||||
monospace = {
|
|
||||||
package = pkgs.nerdfonts.override { fonts = [ "DejaVuSansMono" ]; };
|
|
||||||
name = "DejaVuSansM Nerd Font";
|
|
||||||
};
|
|
||||||
sizes = {
|
|
||||||
applications = 10;
|
|
||||||
desktop = 12;
|
|
||||||
popups = 14;
|
|
||||||
terminal = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
liberation_ttf # Documents
|
|
||||||
lmodern # LaTeX
|
|
||||||
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,248 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
username,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
nixpkgs.config.chromium.commandLineArgs = "--password-store='gnome-libsecret' --enable-features=UseOzonePlatform --ozone-platform=wayland";
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
environment = {
|
|
||||||
sessionVariables = {
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
MOZ_ENABLE_WAYLAND = "1";
|
|
||||||
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
|
|
||||||
MPLBACKEND = "TkAgg";
|
|
||||||
GDK_BACKEND = "wayland,x11";
|
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
|
||||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
||||||
};
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
libsecret
|
|
||||||
libnotify
|
|
||||||
xdg-utils
|
|
||||||
hunspell
|
|
||||||
hunspellDicts.en_GB-large
|
|
||||||
wl-clipboard
|
|
||||||
speedtest
|
|
||||||
overskride
|
|
||||||
hyprpicker
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
swappy
|
|
||||||
nautilus
|
|
||||||
libreoffice
|
|
||||||
evince
|
|
||||||
image-roll
|
|
||||||
imagemagick
|
|
||||||
clapper
|
|
||||||
g4music
|
|
||||||
ffmpeg
|
|
||||||
picard
|
|
||||||
whipper
|
|
||||||
remmina
|
|
||||||
fractal
|
|
||||||
webcord
|
|
||||||
signal-desktop
|
|
||||||
whatsapp-for-linux
|
|
||||||
teams-for-linux
|
|
||||||
twinkle
|
|
||||||
nomachine-client
|
|
||||||
];
|
|
||||||
};
|
|
||||||
security = {
|
|
||||||
polkit.enable = true;
|
|
||||||
pam.loginLimits = [
|
|
||||||
{
|
|
||||||
domain = "@users";
|
|
||||||
item = "rtprio";
|
|
||||||
type = "-";
|
|
||||||
value = 1;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
dconf.enable = true;
|
|
||||||
noisetorch.enable = true;
|
|
||||||
seahorse.enable = true;
|
|
||||||
file-roller.enable = true;
|
|
||||||
hyprland.enable = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
|
||||||
gtk.iconCache.enable = true;
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
style = if config.lib.stylix.scheme.variant == "light" then "adwaita" else "adwaita-dark";
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
flatpak.enable = true;
|
|
||||||
printing.enable = true;
|
|
||||||
tumbler.enable = true;
|
|
||||||
udisks2.enable = true;
|
|
||||||
gnome.sushi.enable = true;
|
|
||||||
gvfs = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.gnome.gvfs;
|
|
||||||
};
|
|
||||||
kanata = {
|
|
||||||
enable = true;
|
|
||||||
keyboards.main = {
|
|
||||||
config = builtins.readFile ./kanata.kbd;
|
|
||||||
extraDefCfg = "process-unmapped-keys yes";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
pipewire = {
|
|
||||||
enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
alsa = {
|
|
||||||
enable = true;
|
|
||||||
support32Bit = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings =
|
|
||||||
let
|
|
||||||
default_session.command = "Hyprland";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit default_session;
|
|
||||||
initial_session = {
|
|
||||||
inherit (default_session) command;
|
|
||||||
user = username;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
xkb.layout = "gb";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
config.common.default = "*"; # TODO change for xdg-desktop-portal > 1.17 changes
|
|
||||||
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
|
||||||
};
|
|
||||||
home-manager.users.${username} =
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./home/hyprland.nix
|
|
||||||
./home/terminal/default.nix
|
|
||||||
./home/browser/firefox.nix
|
|
||||||
./home/emacs/default.nix
|
|
||||||
./home/email/default.nix
|
|
||||||
./home/calendar/default.nix
|
|
||||||
./home/password-store/default.nix
|
|
||||||
];
|
|
||||||
home.file.${config.gtk.gtk2.configLocation}.force = true;
|
|
||||||
services = {
|
|
||||||
syncthing.enable = true;
|
|
||||||
gammastep = {
|
|
||||||
inherit (osConfig.location) latitude longitude provider;
|
|
||||||
enable = true;
|
|
||||||
tray = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
|
||||||
iconTheme = {
|
|
||||||
package = (pkgs.papirus-icon-theme.override { color = "indigo"; });
|
|
||||||
name = if config.lib.stylix.scheme.variant == "light" then "Papirus-Light" else "Papirus-Dark";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
stylix.targets.gtk.extraCss = with config.lib.stylix.scheme.withHashtag; ''
|
|
||||||
@define-color accent_color ${base0E-hex};
|
|
||||||
@define-color accent_bg_color ${base0E-hex};
|
|
||||||
'';
|
|
||||||
xdg = {
|
|
||||||
mime.enable = true;
|
|
||||||
mimeApps =
|
|
||||||
let
|
|
||||||
defaultApplications = import ./mimeapps.nix;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
inherit defaultApplications;
|
|
||||||
associations.added = defaultApplications;
|
|
||||||
};
|
|
||||||
userDirs = {
|
|
||||||
enable = true;
|
|
||||||
createDirectories = true;
|
|
||||||
extraConfig = {
|
|
||||||
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
configFile = {
|
|
||||||
# Stop programs from overriding mimeapps
|
|
||||||
"mimeapps.list".force = true;
|
|
||||||
# Ensure GTK config is set
|
|
||||||
"gtk-3.0/gtk.css".force = true;
|
|
||||||
"gtk-3.0/settings.ini".force = true;
|
|
||||||
"gtk-4.0/gtk.css".force = true;
|
|
||||||
"gtk-4.0/settings.ini".force = true;
|
|
||||||
# Set Swappy config so that it saves to Screenshots directory
|
|
||||||
"swappy/config".text = ''
|
|
||||||
[Default]
|
|
||||||
save_dir=${config.xdg.userDirs.pictures}/Screenshots/
|
|
||||||
save_filename_format=swappy-%Y%m%d-%H%M%S.png
|
|
||||||
show_panel=false
|
|
||||||
line_size=5
|
|
||||||
text_size=${toString config.stylix.fonts.sizes.desktop}
|
|
||||||
text_font=${config.stylix.fonts.sansSerif.name}
|
|
||||||
paint_mode=brush
|
|
||||||
early_exit=false
|
|
||||||
fill_shape=false
|
|
||||||
'';
|
|
||||||
# WhatsApp config
|
|
||||||
"whatsapp-for-linux/settings.conf" =
|
|
||||||
let
|
|
||||||
inherit (config.lib.stylix.scheme) variant;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
force = true;
|
|
||||||
text = ''
|
|
||||||
[web]
|
|
||||||
allow-permissions=true
|
|
||||||
hw-accel=2
|
|
||||||
|
|
||||||
[general]
|
|
||||||
notification-sounds=true
|
|
||||||
close-to-tray=true
|
|
||||||
start-in-tray=true
|
|
||||||
|
|
||||||
[appearance]
|
|
||||||
prefer-dark-theme=${if variant == "dark" then "true" else "false"}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
# Teams config
|
|
||||||
"teams-for-linux/config.json" = {
|
|
||||||
force = true;
|
|
||||||
text = builtins.toJSON {
|
|
||||||
awayOnSystemIdle = true;
|
|
||||||
closeAppOnCross = false;
|
|
||||||
followSystemTheme = true;
|
|
||||||
notificationMethod = "electron";
|
|
||||||
optInTeamsV2 = true;
|
|
||||||
spellCheckerLanguages = [ "en_GB" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Autostart some programs
|
|
||||||
"autostart/signal-desktop.desktop".source =
|
|
||||||
"${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
|
||||||
"autostart/com.github.eneshecan.WhatsAppForLinux.desktop".source =
|
|
||||||
"${pkgs.whatsapp-for-linux}/share/applications/com.github.eneshecan.WhatsAppForLinux.desktop";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{ config, lib, ... }:
|
|
||||||
{
|
|
||||||
services.avizo = {
|
|
||||||
enable = true;
|
|
||||||
settings.default = {
|
|
||||||
image-opacity = lib.mkForce "1.0";
|
|
||||||
border-color =
|
|
||||||
let
|
|
||||||
scheme = config.lib.stylix.scheme;
|
|
||||||
in
|
|
||||||
lib.mkForce "rgba(${scheme.base0E-rgb-r}, ${scheme.base0E-rgb-g}, ${scheme.base0E-rgb-b}, 1.0)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,307 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"name": "Spotify",
|
|
||||||
"url": "https://open.spotify.com",
|
|
||||||
"tags": ["Music", "Streaming"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ABRP",
|
|
||||||
"url": "https://abetterrouteplanner.com/",
|
|
||||||
"tags": ["Travel"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Patreon",
|
|
||||||
"url": "https://www.patreon.com/home",
|
|
||||||
"tags": ["Personal"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "NHS App",
|
|
||||||
"url": "https://www.nhsapp.service.nhs.uk/login",
|
|
||||||
"tags": ["Personal", "NHS"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Krystal Hosting",
|
|
||||||
"url": "https://krystal.io",
|
|
||||||
"tags": ["Server", "Hosting"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Home Assistant",
|
|
||||||
"url": "https://home.xenia.me.uk",
|
|
||||||
"tags": ["Home", "Automation", "Personal"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Forgejo",
|
|
||||||
"url": "https://git.xenia.me.uk",
|
|
||||||
"tags": ["Software", "Git", "Personal"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "GitHub",
|
|
||||||
"url": "https://github.com",
|
|
||||||
"tags": ["Software", "Git"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CCFE GitLab",
|
|
||||||
"url": "https://git.ccfe.ac.uk",
|
|
||||||
"tags": ["Software", "Git", "Work"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "NixOS Manual",
|
|
||||||
"url": "https://nixos.org/manual/nixpkgs/stable/",
|
|
||||||
"tags": ["Software", "Documentation", "Ni"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Home Manager",
|
|
||||||
"url": "https://nix-community.github.io/home-manager/options.xhtml",
|
|
||||||
"tags": ["Software", "Documentation", "Nix"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Plasma Manager",
|
|
||||||
"url": "https://nix-community.github.io/plasma-manager/",
|
|
||||||
"tags": ["Software", "Documentation", "Nix", "KDE", "Plasma"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "NixOS and Flakes",
|
|
||||||
"url": "https://nixos-and-flakes.thiscute.world/",
|
|
||||||
"tags": ["Software", "Documentation", "Nix"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "KDE Plasma Desktop Scripting",
|
|
||||||
"url": "https://develop.kde.org/docs/plasma/scripting/",
|
|
||||||
"tags": ["Software", "Documentation", "KDE", "Plasma"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Awesome Emacs",
|
|
||||||
"url": "https://github.com/emacs-tw/awesome-emacs",
|
|
||||||
"tags": ["Software", "Repositories"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Awesome Wayland",
|
|
||||||
"url": "https://github.com/natpen/awesome-wayland",
|
|
||||||
"tags": ["Software", "Repositories"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Awesome Selfhosted",
|
|
||||||
"url": "https://github.com/awesome-selfhosted/awesome-selfhosted",
|
|
||||||
"tags": ["Software", "Repositories"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Awesome reMarkable",
|
|
||||||
"url": "https://github.com/reHackable/awesome-reMarkable",
|
|
||||||
"tags": ["Software", "Repositories"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "NixOS Wiki",
|
|
||||||
"url": "https://nixos.wiki",
|
|
||||||
"tags": ["Wiki"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Arch Wiki",
|
|
||||||
"url": "https://wiki.archlinux.org",
|
|
||||||
"tags": ["Wiki"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Filament Guide",
|
|
||||||
"url": "https://help.prusa3d.com/materials",
|
|
||||||
"tags": ["3D Printing", "Filament"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Thingiverse",
|
|
||||||
"url": "https://www.thingiverse.com/",
|
|
||||||
"tags": ["3D Printing"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Printables",
|
|
||||||
"url": "https://www.printables.com/",
|
|
||||||
"tags": ["3D Printing"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "MyMiniFactory",
|
|
||||||
"url": "https://www.myminifactory.com",
|
|
||||||
"tags": ["3D Printing"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pinshape",
|
|
||||||
"url": "https://www.pinshape.com",
|
|
||||||
"tags": ["3D Printing"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "YouMagine",
|
|
||||||
"url": "https://www.youmagine.com",
|
|
||||||
"tags": ["3D Printing"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SHAPEWAYS",
|
|
||||||
"url": "https://www.shapeways.com",
|
|
||||||
"tags": ["3D Printing"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Gambody",
|
|
||||||
"url": "https://www.gambody.com",
|
|
||||||
"tags": ["3D Printing"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "TouchTerrain",
|
|
||||||
"url": "https://touchterrain.geol.iastate.edu/",
|
|
||||||
"tags": ["3D Printing", "Modelling"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Touch Mapper",
|
|
||||||
"url": "https://touch-mapper.org/en/",
|
|
||||||
"tags": ["3D Printing", "Modelling"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Homepage",
|
|
||||||
"url": "https://wiki.jetdata.eu/open/index.php?title=Main_Page",
|
|
||||||
"tags": ["Wiki", "OpenWiki"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Diagnostic Coordinator",
|
|
||||||
"url": "https://wiki.jetdata.eu/open/index.php?title=Diagnostic_Coordinator_Wiki",
|
|
||||||
"tags": ["Wiki", "OpenWiki"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Spectroscopy Group",
|
|
||||||
"url": "https://wiki.jetdata.eu/open/index.php?title=Spectroscopy_Group:index",
|
|
||||||
"tags": ["Wiki", "OpenWiki"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "KS5 Wiki",
|
|
||||||
"url": "https://wiki.jetdata.eu/open/index.php?title=CXS:Topic3",
|
|
||||||
"tags": ["Wiki", "OpenWiki"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "KT3 Journals",
|
|
||||||
"url": "https://wiki.jetdata.eu/open/index.php?title=KT3_Journals",
|
|
||||||
"tags": ["Wiki", "OpenWiki"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Nucleus",
|
|
||||||
"url": "https://nucleus.ukaea.uk/",
|
|
||||||
"tags": ["Work"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Ivanti",
|
|
||||||
"url": "https://ukaea-ism.ivanticloud.com/Modules/SelfService/?NoDefaultProvider=True#home",
|
|
||||||
"tags": ["Work"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "U4BW",
|
|
||||||
"url": "https://ubw.unit4cloud.com/uk_aea_prod_web/Login/Login.aspx",
|
|
||||||
"tags": ["Work"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "APS",
|
|
||||||
"url": "https://appraisal.org.ukaea.uk/",
|
|
||||||
"tags": ["Work"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Robin",
|
|
||||||
"url": "https://dashboard.robinpowered.com/UKAEA/",
|
|
||||||
"tags": ["Work", "Room Booking"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "UKAEA Pinboard",
|
|
||||||
"url": "https://pinboard.ukaea.uk/",
|
|
||||||
"tags": ["Work"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "EUROFusion Pinboard",
|
|
||||||
"url": "https://users.euro-fusion.org/webapps/pinboard/EFDA-JET/",
|
|
||||||
"tags": ["Work"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "OPEN-ADAS",
|
|
||||||
"url": "https://open.adas.ac.uk/",
|
|
||||||
"tags": ["Work"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Physics Summary",
|
|
||||||
"url": "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php",
|
|
||||||
"tags": ["Work", "JET"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "DVCM Homepage",
|
|
||||||
"url": "https://dvcm.jetdata.eu/",
|
|
||||||
"tags": ["Work", "JET"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "JET Data Services",
|
|
||||||
"url": "https://data.jet.uk",
|
|
||||||
"tags": ["Work", "JET", "Data"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "JET Dashboard",
|
|
||||||
"url": "https://data.jet.uk/dashboard/sessions/",
|
|
||||||
"tags": ["Work", "JET", "Data"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "PPF Query",
|
|
||||||
"url": "https://data.jet.uk/ppf/browse/ppfquery",
|
|
||||||
"tags": ["Work", "JET", "Data"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ReqCo",
|
|
||||||
"url": "https://data.jet.uk/reqco/myrequests",
|
|
||||||
"tags": ["Work", "JET", "Data"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Countdown Mimic",
|
|
||||||
"url": "http://webmimic.jet.uk/mc/codas/countdown",
|
|
||||||
"tags": ["Work", "JET", "Mimic"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "KS5 Mimic",
|
|
||||||
"url": "http://webmimic.jet.uk/DG/codas/ks5.mim.html",
|
|
||||||
"tags": ["Work", "JET", "Mimic"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "KT3 Mimic",
|
|
||||||
"url": "http://webmimic.jet.uk/DG/codas/kt3spec.mim.html",
|
|
||||||
"tags": ["Work", "JET", "Mimic"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "MAST-U Users Page",
|
|
||||||
"url": "https://users.mastu.ukaea.uk/home",
|
|
||||||
"tags": ["Work", "MAST-U"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "MAST-U Diagnostic Handbook",
|
|
||||||
"url": "https://intranet.ccfe.ac.uk/mastu-handbook",
|
|
||||||
"tags": ["Work", "MAST-U"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "MAST-U Data Access and Tools",
|
|
||||||
"url": "https://users.mastu.ukaea.uk/data-access-and-tools",
|
|
||||||
"tags": ["Work", "MAST-U"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Outlook Calendar",
|
|
||||||
"url": "https://outlook.office.com/calendar/view/workweek",
|
|
||||||
"tags": ["Work", "Office"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "LGBTQIA+ Network Email",
|
|
||||||
"url": "https://outlook.office.com/mail/ContactUs@lgbtqi.ukaea.uk/",
|
|
||||||
"tags": ["Work", "Office", "Network", "LGBTQIA+"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "OneDrive",
|
|
||||||
"url": "https://ukaeauk-my.sharepoint.com/",
|
|
||||||
"tags": ["Work", "Office"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "PSFO Sharepoint",
|
|
||||||
"url": "https://ukaeauk.sharepoint.com/sites/Plasma",
|
|
||||||
"tags": ["Work", "Office"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Spectroscopy and Imaging Sharepoint",
|
|
||||||
"url": "https://ukaeauk.sharepoint.com/sites/Plasma/Team_Areas/SitePages/Spectroscopy-and-Imaging---Team-Area.aspx",
|
|
||||||
"tags": ["Work", "Office"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Culham Canteen Menus",
|
|
||||||
"url": "https://nucleus.ukaea.uk/Interact/Pages/Section/Default.aspx?section=10112",
|
|
||||||
"tags": ["Work", "Canteen", "Menu"]
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,67 +0,0 @@
|
||||||
(define-configuration buffer
|
|
||||||
((default-modes
|
|
||||||
(pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))
|
|
||||||
(default-modes
|
|
||||||
(pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))))
|
|
||||||
|
|
||||||
(define-configuration status-buffer
|
|
||||||
((glyph-mode-presentation-p t)
|
|
||||||
(display-tabs-by-last-access-p nil)))
|
|
||||||
|
|
||||||
(define-configuration :emacs-mode ((glyph "ε")))
|
|
||||||
(define-configuration :force-https-mode ((glyph "ϕ")))
|
|
||||||
(define-configuration :no-script-mode ((glyph "j")))
|
|
||||||
(define-configuration :user-script-mode ((glyph "u")))
|
|
||||||
(define-configuration :blocker-mode ((glyph "β")))
|
|
||||||
(define-configuration :proxy-mode ((glyph "π")))
|
|
||||||
(define-configuration :reduce-tracking-mode ((glyph "τ")))
|
|
||||||
(define-configuration :reduce-bandwidth-mode ((glyph "r")))
|
|
||||||
(define-configuration :certificate-exception-mode ((glyph "χ")))
|
|
||||||
(define-configuration :style-mode ((glyph "ϕ")))
|
|
||||||
(define-configuration :cruise-control-mode ((glyph "σ")))
|
|
||||||
|
|
||||||
(define-configuration :document-mode
|
|
||||||
"Extend with custom keybinds"
|
|
||||||
((keyscheme-map
|
|
||||||
(keymaps:define-keyscheme-map "custom" (list :import %slot-value%)
|
|
||||||
nyxt/keyscheme:emacs (list
|
|
||||||
"C-c u" 'copy-username
|
|
||||||
"C-c p" 'copy-password)))))
|
|
||||||
|
|
||||||
(define-configuration :autofill-mode
|
|
||||||
"Add autofill functions for passwords"
|
|
||||||
((autofills
|
|
||||||
(list
|
|
||||||
(nyxt/mode/autofill:make-autofill
|
|
||||||
:name "name"
|
|
||||||
:fill "Evie Litherland-Smith")
|
|
||||||
(nyxt/mode/autofill:make-autofill
|
|
||||||
:name "email"
|
|
||||||
:fill "evie@xenia.me.uk")))))
|
|
||||||
|
|
||||||
(defvar *my-search-engines*
|
|
||||||
(list
|
|
||||||
'("osm" "https://www.openstreetmap.org/search?query=~a" "https://www.openstreetmap.org/")
|
|
||||||
'("rust" "https://doc.rust-lang.org/std/index.html?search=~a" "https://doc.rust-lang.org/std/index.html")
|
|
||||||
'("crates" "https://crates.io/search?q=~a" "https://crates.io/")
|
|
||||||
'("py" "https://docs.python.org/3/search.html?q=~a" "https://docs.python.org/3")
|
|
||||||
'("pypi" "https://pypi.org/search/?q=~a" "https://pypi.org/")
|
|
||||||
'("nixwiki" "https://nixos.wiki/index.php?search=~a&go=Go" "https://nixos.wiki/")
|
|
||||||
'("archwiki" "https://wiki.archlinux.org/index.php?search=~a" "https://wiki.archlinux.org/")
|
|
||||||
'("github" "https://github.com/search?utf8=✓&q=~a&type=repositories" "https://github.com/")
|
|
||||||
'("flathub" "https://flathub.org/apps/search?q=~a" "https://flathub.org/")
|
|
||||||
'("doi" "https://dx.doi.org/~a" "https://dx.doi.org/")
|
|
||||||
'("wiki" "https://en.wikipedia.org/w/index.php?search=~a" "https://en.wikipedia.org/")
|
|
||||||
'("ddg" "https://html.duckduckgo.com/html/?q=~a" "https://html.duckduckgo.com/"))
|
|
||||||
"List of search engines.")
|
|
||||||
|
|
||||||
(define-configuration context-buffer
|
|
||||||
"Go through the search engines above and make-search-engine out of them."
|
|
||||||
((search-engines
|
|
||||||
(mapcar (lambda (engine) (apply 'make-search-engine engine))
|
|
||||||
*my-search-engines*))))
|
|
||||||
|
|
||||||
(define-configuration browser
|
|
||||||
((restore-session-on-startup-p nil)))
|
|
||||||
|
|
||||||
(setf (uiop/os:getenv "GTK_THEME") "Adwaita:light")
|
|
|
@ -1,228 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
stylix.targets.firefox.enable = false;
|
|
||||||
programs = {
|
|
||||||
browserpass = {
|
|
||||||
enable = true;
|
|
||||||
browsers = [ "firefox" ];
|
|
||||||
};
|
|
||||||
firefox = {
|
|
||||||
enable = true;
|
|
||||||
policies = {
|
|
||||||
BlockAboutProfiles = true;
|
|
||||||
Cookies = {
|
|
||||||
Behavior = "reject-tracker-and-partition-foreign";
|
|
||||||
BehaviorPrivateBrowsing = "reject";
|
|
||||||
Locked = true;
|
|
||||||
};
|
|
||||||
DefaultDownloadDirectory = config.xdg.userDirs.download;
|
|
||||||
DisableAppUpdate = true;
|
|
||||||
DisableFirefoxAccounts = true;
|
|
||||||
DisableFirefoxScreenshots = true;
|
|
||||||
DisableFirefoxStudies = true;
|
|
||||||
DisableFormHistory = true;
|
|
||||||
DisablePocket = true;
|
|
||||||
DisableProfileImport = true;
|
|
||||||
DisableSetDesktopBackground = true;
|
|
||||||
DisableSystemAddonUpdate = true;
|
|
||||||
DisableTelemetry = true;
|
|
||||||
DisplayMenuBar = "default-off";
|
|
||||||
DontCheckDefaultBrowser = true;
|
|
||||||
EnableTrackingProtection = {
|
|
||||||
Locked = true;
|
|
||||||
Cryptomining = true;
|
|
||||||
Fingerprinting = true;
|
|
||||||
};
|
|
||||||
ExtensionSettings = {
|
|
||||||
"queryamoid@kaply.com" = {
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
install_url = "https://github.com/mkaply/queryamoid/releases/download/v0.1/query_amo_addon_id-0.1-fx.xpi";
|
|
||||||
};
|
|
||||||
# uBlock Origin
|
|
||||||
"uBlock0@raymondhill.net" = {
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
|
||||||
};
|
|
||||||
# Browserpass
|
|
||||||
"browserpass@maximbaz.com" = {
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/browserpass-ce/latest.xpi";
|
|
||||||
};
|
|
||||||
# SimpleLogin
|
|
||||||
"addon@simplelogin" = {
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/simplelogin/latest.xpi";
|
|
||||||
};
|
|
||||||
# Consent-O-Matic
|
|
||||||
"gdpr@cavi.au.dk" = {
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/consent-o-matic/latest.xpi";
|
|
||||||
};
|
|
||||||
# ClearURLs
|
|
||||||
"{74145f27-f039-47ce-a470-a662b129930a}" = {
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/clearurls/latest.xpi";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
FirefoxHome = {
|
|
||||||
Search = true;
|
|
||||||
TopSites = false;
|
|
||||||
SponsoredTopSites = false;
|
|
||||||
Highlights = false;
|
|
||||||
Pocket = false;
|
|
||||||
SponsoredPocket = false;
|
|
||||||
Snippets = false;
|
|
||||||
Locked = true;
|
|
||||||
};
|
|
||||||
FirefoxSuggest = {
|
|
||||||
WebSuggestions = false;
|
|
||||||
SponsoredSuggestions = false;
|
|
||||||
ImproveSuggest = false;
|
|
||||||
Locked = true;
|
|
||||||
};
|
|
||||||
HardwareAcceleration = true;
|
|
||||||
Homepage = {
|
|
||||||
Locked = true;
|
|
||||||
StartPage = "homepage-locked";
|
|
||||||
};
|
|
||||||
NewTabPage = true;
|
|
||||||
NoDefaultBookmarks = false;
|
|
||||||
OfferToSaveLogins = false;
|
|
||||||
PasswordManagerEnabled = false;
|
|
||||||
PDFjs = {
|
|
||||||
Enabled = false;
|
|
||||||
};
|
|
||||||
Permissions = {
|
|
||||||
Autoplay = {
|
|
||||||
Default = "block-audio-video";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
PictureInPicture = {
|
|
||||||
Enabled = true;
|
|
||||||
};
|
|
||||||
PopupBlocking = {
|
|
||||||
Default = true;
|
|
||||||
};
|
|
||||||
RequestedLocales = [ "en-GB" ];
|
|
||||||
SearchBar = "unified";
|
|
||||||
ShowHomeButton = true;
|
|
||||||
StartDownloadsInTempDirectory = true;
|
|
||||||
};
|
|
||||||
profiles.user = {
|
|
||||||
isDefault = true;
|
|
||||||
bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json);
|
|
||||||
settings = {
|
|
||||||
"app.shield.optoutstudies.enabled" = false;
|
|
||||||
"browser.startup.homepage" = lib.mkDefault "about:home";
|
|
||||||
"browser.tabs.inTitlebar" = 0;
|
|
||||||
"browser.bookmarks.addedImportButton" = false;
|
|
||||||
"browser.bookmarks.showMobileBookmarks" = false;
|
|
||||||
"browser.toolbars.bookmarks.visibility" = "never";
|
|
||||||
"browser.contentblocking.category" = "strict";
|
|
||||||
"browser.search.region" = "GB";
|
|
||||||
"browser.search.isUS" = false;
|
|
||||||
"browser.warnOnQuitShortcut" = false;
|
|
||||||
"browser.zoom.siteSpecific" = false;
|
|
||||||
"distribution.searchplugins.defaultLocale" = "en-GB";
|
|
||||||
"doh-rollout.home-region" = "GB";
|
|
||||||
"dom.private-attribution.submission.enabled" = false;
|
|
||||||
"extensions.activeThemeID" = "default-theme@mozilla.org";
|
|
||||||
"extensions.formautofill.creditCards.enabled" = false;
|
|
||||||
"general.useragent.locale" = "en-GB";
|
|
||||||
"intl.accept_languages" = "en-gb,en";
|
|
||||||
"intl.locale.requested" = "en-gb,en";
|
|
||||||
"intl.regional_prefs.use_os_locales" = true;
|
|
||||||
"media.eme.enabled" = true;
|
|
||||||
"privacy.globalprivacycontrol.enabled" = true;
|
|
||||||
"privacy.donottrackheader.enabled" = true;
|
|
||||||
"privacy.webrtc.legacyGlobalIndicator" = false;
|
|
||||||
"signon.management.page.breach-alerts.enabled" = false;
|
|
||||||
"signon.rememberSignons" = false;
|
|
||||||
"widget.use-xdg-desktop-portal.file-picker" = 1;
|
|
||||||
"widget.use-xdg-desktop-portal.mime-handler" = 1;
|
|
||||||
"widget.use-xdg-desktop-portal.open-uri" = 1;
|
|
||||||
"browser.newtabpage.pinned" = [
|
|
||||||
{
|
|
||||||
title = "NixOS Wiki";
|
|
||||||
url = "https://wiki.nixos.org";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
title = "Arch Wiki";
|
|
||||||
url = "https://wiki.archlinux.org";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
title = "Hyprland Wiki";
|
|
||||||
url = "https://wiki.hyprland.org";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
search = rec {
|
|
||||||
default = "DuckDuckGo";
|
|
||||||
privateDefault = default;
|
|
||||||
force = true;
|
|
||||||
order = [
|
|
||||||
"DuckDuckGo"
|
|
||||||
"Atlas SearXNG"
|
|
||||||
];
|
|
||||||
engines = {
|
|
||||||
"Atlas SearXNG" = {
|
|
||||||
urls = [ { template = "https://search.atlas.engineer/searxng/search?q={searchTerms}"; } ];
|
|
||||||
definedAliases = [ "@atlas" ];
|
|
||||||
};
|
|
||||||
"NixOS Wiki" = {
|
|
||||||
urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ];
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [
|
|
||||||
"@nix"
|
|
||||||
"@nixos"
|
|
||||||
"@nixoswiki"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"Arch Wiki" = {
|
|
||||||
urls = [ { template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; } ];
|
|
||||||
definedAliases = [
|
|
||||||
"@aw"
|
|
||||||
"@arch"
|
|
||||||
"@archwiki"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"GitHub" = {
|
|
||||||
urls = [ { template = "https://github.com/search?q={searchTerms}"; } ];
|
|
||||||
definedAliases = [
|
|
||||||
"@gh"
|
|
||||||
"@git"
|
|
||||||
"@github"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"FlatHub" = {
|
|
||||||
url = [ { template = "https://flathub.org/apps/search?q={searchTerms}"; } ];
|
|
||||||
definedAliases = [
|
|
||||||
"@flat"
|
|
||||||
"@fthub"
|
|
||||||
"@flathub"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"NixOS Packages" = {
|
|
||||||
urls = [
|
|
||||||
{
|
|
||||||
template = "http://search.nixos.org/packages?channel=unstable&size=50&sort=relevance&type=packages&query={searchTerms}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [ "@nixpkgs" ];
|
|
||||||
};
|
|
||||||
"PyPI packages" = {
|
|
||||||
urls = [ { template = "https://pypi.org/search/?q={searchTerms}"; } ];
|
|
||||||
definedAliases = [ "@pypi" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
programs = {
|
|
||||||
browserpass.browsers = [ "librewolf" ];
|
|
||||||
librewolf = {
|
|
||||||
enable = true;
|
|
||||||
settings = { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [ pkgs.nyxt ];
|
|
||||||
xdg = {
|
|
||||||
configFile = {
|
|
||||||
"nyxt/config.lisp".text =
|
|
||||||
let
|
|
||||||
fonts = config.stylix.fonts;
|
|
||||||
scheme = config.lib.stylix.scheme.withHashtag;
|
|
||||||
in
|
|
||||||
''
|
|
||||||
;; Import custom configuration
|
|
||||||
(nyxt::load-lisp "${./config.lisp}")
|
|
||||||
;; Define custom theme
|
|
||||||
(define-configuration browser
|
|
||||||
((theme (make-instance 'theme:theme
|
|
||||||
:dark-p nil
|
|
||||||
:font-family "${fonts.sansSerif.name}"
|
|
||||||
:monospace-font-family "${fonts.monospace.name}"
|
|
||||||
:background-color "${scheme.base00}"
|
|
||||||
:on-background-color "${scheme.base05}"
|
|
||||||
:primary-color "${scheme.base02}"
|
|
||||||
:on-primary-color "${scheme.base05}"
|
|
||||||
:secondary-color "${scheme.base03}"
|
|
||||||
:on-secondary-color "${scheme.base05}"
|
|
||||||
:accent-color "${scheme.magenta}"
|
|
||||||
:on-accent-color "${scheme.base01}"
|
|
||||||
:action-color "${scheme.cyan}"
|
|
||||||
:on-action-color "${scheme.base01}"
|
|
||||||
:success-color "${scheme.green}"
|
|
||||||
:on-success-color "${scheme.base01}"
|
|
||||||
:highlight-color "${scheme.magenta}"
|
|
||||||
:on-highlight-color "${scheme.base01}"
|
|
||||||
:warning-color "${scheme.yellow}"
|
|
||||||
:on-warning-color "${scheme.base01}"
|
|
||||||
:codeblock-color "${scheme.base02}"
|
|
||||||
:on-codeblock-color "${scheme.base05}"))))
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
dataFile."nyxt/bookmarks.lisp".text =
|
|
||||||
let
|
|
||||||
# Make a string of lisp-style list of strings, from nix-style
|
|
||||||
# list
|
|
||||||
convertTags = tags: "(" + (builtins.foldl' (x: y: x + " \"" + y + "\"") "" tags) + " )";
|
|
||||||
# Take bookmarks as returned from JSON file and convert to NYXT
|
|
||||||
# expected format
|
|
||||||
convertBookmark =
|
|
||||||
{
|
|
||||||
name,
|
|
||||||
tags,
|
|
||||||
url,
|
|
||||||
}:
|
|
||||||
"(:url \"${url}\" :title \"${name}\" :tags ${convertTags tags})\n";
|
|
||||||
in
|
|
||||||
(
|
|
||||||
# Fold all entries in bookmarks.json into single string of NYXT
|
|
||||||
# format bookmarks, each entry on a new line and with 2 space
|
|
||||||
# indentation, just for visual clarity if reading the outputted
|
|
||||||
# file
|
|
||||||
"(\n"
|
|
||||||
+ (builtins.foldl' (x: y: x + " " + convertBookmark y) "" (
|
|
||||||
builtins.fromJSON (builtins.readFile ./bookmarks.json)
|
|
||||||
))
|
|
||||||
+ ")"
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
programs.qutebrowser = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
changelog_after_upgrade = "major";
|
|
||||||
# confirm_quit = "downloads";
|
|
||||||
content = {
|
|
||||||
autoplay = false;
|
|
||||||
blocking.enabled = true;
|
|
||||||
cookies.accept = "no-unknown-3rdparty";
|
|
||||||
headers.do_not_track = true;
|
|
||||||
};
|
|
||||||
downloads.location.directory = config.xdg.userDirs.download;
|
|
||||||
new_instance_open_target = "tab";
|
|
||||||
qt.highdpi = true;
|
|
||||||
scrolling.smooth = true;
|
|
||||||
# spellcheck.languages = [ "en-GB" ];
|
|
||||||
tabs = {
|
|
||||||
last_close = "blank";
|
|
||||||
show = "multiple";
|
|
||||||
};
|
|
||||||
url.default_page = lib.mkDefault "about:blank";
|
|
||||||
window.hide_decoration = true;
|
|
||||||
};
|
|
||||||
searchEngines = {
|
|
||||||
w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
|
|
||||||
aw = "https://wiki.archlinux.org/?search={}";
|
|
||||||
nw = "https://wiki.nixos.org/index.php?search={}";
|
|
||||||
gh = "https://github.com/search?q={}";
|
|
||||||
fh = "https://flathub.org/apps/search?q={}";
|
|
||||||
py = "https://pypi.org/search/?q={}";
|
|
||||||
};
|
|
||||||
# quickmarks =
|
|
||||||
# let
|
|
||||||
# in
|
|
||||||
# { };
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs = {
|
|
||||||
vdirsyncer.enable = true;
|
|
||||||
khal = {
|
|
||||||
enable = true;
|
|
||||||
locale = {
|
|
||||||
timeformat = "%H:%M";
|
|
||||||
dateformat = "%Y-%m-%d";
|
|
||||||
longdateformat = "%Y-%m-%d %a";
|
|
||||||
datetimeformat = "%Y-%m-%d %H:%M";
|
|
||||||
longdatetimeformat = "%Y-%m-%d %H:%M";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.vdirsyncer = {
|
|
||||||
inherit (config.programs.vdirsyncer) enable package;
|
|
||||||
frequency = "*:0/30"; # Every 30 minutes
|
|
||||||
};
|
|
||||||
accounts.calendar = {
|
|
||||||
basePath = "Calendar";
|
|
||||||
accounts = {
|
|
||||||
main =
|
|
||||||
let
|
|
||||||
url = "dav.xenia.me.uk";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
primary = true;
|
|
||||||
primaryCollection = "personal";
|
|
||||||
local = {
|
|
||||||
type = "filesystem";
|
|
||||||
fileExt = ".ics";
|
|
||||||
};
|
|
||||||
remote =
|
|
||||||
let
|
|
||||||
userName = "pixelifytica";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit userName;
|
|
||||||
url = "https://${url}";
|
|
||||||
type = "caldav";
|
|
||||||
passwordCommand = [
|
|
||||||
"${pkgs.libsecret}/bin/secret-tool"
|
|
||||||
"lookup"
|
|
||||||
"url"
|
|
||||||
"${url}"
|
|
||||||
"user"
|
|
||||||
"${userName}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
vdirsyncer = {
|
|
||||||
inherit (config.programs.vdirsyncer) enable;
|
|
||||||
auth = "basic";
|
|
||||||
collections = [
|
|
||||||
"personal"
|
|
||||||
"work"
|
|
||||||
"other"
|
|
||||||
];
|
|
||||||
metadata = [ "displayname" ];
|
|
||||||
timeRange = {
|
|
||||||
start = "datetime.now() - timedelta(days=365)";
|
|
||||||
end = "datetime.now() + timedelta(days=365)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
khal = {
|
|
||||||
inherit (config.programs.khal) enable;
|
|
||||||
type = "discover";
|
|
||||||
addresses = with config.accounts.email.accounts.proton; [ address ] ++ aliases;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
../shell/default.nix
|
|
||||||
../shell/git.nix
|
|
||||||
../gpg/default.nix
|
|
||||||
../texlive/default.nix
|
|
||||||
../programming/default.nix
|
|
||||||
];
|
|
||||||
services.emacs = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
package = config.programs.emacs.finalPackage;
|
|
||||||
defaultEditor = true;
|
|
||||||
client.enable = true;
|
|
||||||
socketActivation.enable = true;
|
|
||||||
};
|
|
||||||
programs.emacs = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.emacs30.override {
|
|
||||||
withImageMagick = true;
|
|
||||||
withPgtk = true;
|
|
||||||
};
|
|
||||||
extraPackages = epkgs: import ./packages.nix { inherit epkgs; };
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# External requirements
|
|
||||||
gcc
|
|
||||||
languagetool
|
|
||||||
wordnet
|
|
||||||
pandoc
|
|
||||||
ghostscript
|
|
||||||
mupdf-headless
|
|
||||||
poppler_utils
|
|
||||||
graphviz-nox
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,84 +0,0 @@
|
||||||
#+TITLE: Font Showcase
|
|
||||||
#+AUTHOR: Evie Litherland-Smith
|
|
||||||
This is a showcase of various font and UI features to act as a
|
|
||||||
standard candle.
|
|
||||||
* Font emphasis
|
|
||||||
Examples of:
|
|
||||||
- *Bold text*
|
|
||||||
- /Italic text/
|
|
||||||
- _Underscored text_
|
|
||||||
- =Literal text=
|
|
||||||
- ~Code~
|
|
||||||
- +Strike-through+
|
|
||||||
* Character showcase
|
|
||||||
#+begin_example
|
|
||||||
ABC.DEF.GHI.JKL.MNO.PQRS.TUV.WXYZ abc.def.ghi.jkl.mno.pqrs.tuv.wxyz
|
|
||||||
!iIlL17|¦ ¢coO08BbDQ $5SZ2zs 96µm float il1[]={1-2/3.4,5+6=7/8%90};
|
|
||||||
1234567890 ,._-+= >< «¯-¬_» ~–÷+× {*}[]()<>`+-=$/#_%^@\&|~?'" !,.;:
|
|
||||||
E3CGQ g9q¶ uvw ſßðþ ΓΔΛαδιλμξπτχ∂ ЖЗКУЯжзклмнруфчьыя <= != == => ->
|
|
||||||
#+end_example
|
|
||||||
** Legibility test
|
|
||||||
Can I tell the difference between: 1,i,I,l,L,|
|
|
||||||
How about: 0,O,o
|
|
||||||
* Tables
|
|
||||||
| Heading 1 | Heading 2 | Plot |
|
|
||||||
|-----------+-----------+--------------|
|
|
||||||
| 1 | 1 | |
|
|
||||||
| 2 | 4 | c |
|
|
||||||
| 3 | 9 | W |
|
|
||||||
| 4 | 16 | WV |
|
|
||||||
| 5 | 25 | WWH |
|
|
||||||
| 6 | 36 | WWWW: |
|
|
||||||
| 7 | 49 | WWWWWV |
|
|
||||||
| 8 | 64 | WWWWWWWl |
|
|
||||||
| 9 | 81 | WWWWWWWWWh |
|
|
||||||
| 10 | 100 | WWWWWWWWWWWW |
|
|
||||||
#+TBLFM: $2=$1**2::$3='(orgtbl-ascii-draw $2 1 100 12)
|
|
||||||
* Source blocks
|
|
||||||
#+begin_src python
|
|
||||||
def main(*args, **kwargs) -> None:
|
|
||||||
"""
|
|
||||||
Example docstring for function
|
|
||||||
"""
|
|
||||||
return
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
#+end_src
|
|
||||||
* Example prose
|
|
||||||
#+begin_quote
|
|
||||||
AMONG the many valuable contributions of William Dwight Whitney to
|
|
||||||
linguistic science is one especially important and fundamental
|
|
||||||
principle. It may be stated in these words. In explaining the
|
|
||||||
prehistoric phenomena of language we must assume no other factors than
|
|
||||||
those which we are able to observe and estimate in the historical
|
|
||||||
period of language development. The factors that produced changes in
|
|
||||||
human speech five thousand or ten thousand years ago cannot have been
|
|
||||||
essentially different from those which are now operating to transform
|
|
||||||
living languages. On the basis of this principle we look to-day at a
|
|
||||||
much-discussed problem of Indo-European philology with views very
|
|
||||||
different from the views held by the founders of Comparative Philology
|
|
||||||
and their immediate successors. I refer to the problem, how the
|
|
||||||
Indo-European people came to assign gender to nouns, to distinguish
|
|
||||||
between masculine, feminine, and neuter. This question is of interest
|
|
||||||
to others besides philologists. What man of culture who has learned
|
|
||||||
languages such as the Greek, Latin, or French has not at times
|
|
||||||
wondered that objects which have no possible connection with the
|
|
||||||
natural gender of animals appear constantly in the language as male or
|
|
||||||
female? In German, for example, it is der fuss, but die hand; der
|
|
||||||
geist, but die seele; in Latin, hīc hortus, hīc animus, hīc amor, but
|
|
||||||
haec planta, haec anima, haec felicitas; in Greek, ὁ πλοῦτος, ὁ οἶκος,
|
|
||||||
but ἡ πενία, ἡ οἰκία.
|
|
||||||
|
|
||||||
This gender distinction pervades all the older Indo-European
|
|
||||||
languages, and must therefore be regarded as having its origin in the
|
|
||||||
time of the pro-ethnic Indo-European community. Not only is the
|
|
||||||
subject itself full of interest, but also the treatment it has
|
|
||||||
received from the philological research of our century. The various
|
|
||||||
efforts made to solve the problem may very aptly illustrate an
|
|
||||||
essential difference which exists between the theories of language
|
|
||||||
development held in the beginning and middle of this century and those
|
|
||||||
which prevail to-day, — a difference of method existing not in
|
|
||||||
comparative linguistics alone, but also in other fields of
|
|
||||||
philological and historical research that border on it.
|
|
||||||
#+end_quote
|
|
|
@ -1,50 +0,0 @@
|
||||||
{ epkgs }:
|
|
||||||
with epkgs;
|
|
||||||
[
|
|
||||||
# EViL Mode
|
|
||||||
evil
|
|
||||||
# UI and Appearance
|
|
||||||
delight
|
|
||||||
nerd-icons
|
|
||||||
nerd-icons-dired
|
|
||||||
nerd-icons-ibuffer
|
|
||||||
nerd-icons-corfu
|
|
||||||
# Email and Calendar
|
|
||||||
khalel
|
|
||||||
mu4e
|
|
||||||
# Other (TODO sort)
|
|
||||||
diff-hl
|
|
||||||
org-roam
|
|
||||||
org-journal
|
|
||||||
org-noter
|
|
||||||
citar
|
|
||||||
vertico
|
|
||||||
marginalia
|
|
||||||
orderless
|
|
||||||
corfu
|
|
||||||
corfu-terminal
|
|
||||||
cape
|
|
||||||
consult
|
|
||||||
consult-eglot
|
|
||||||
tempel
|
|
||||||
tempel-collection
|
|
||||||
rainbow-delimiters
|
|
||||||
envrc
|
|
||||||
treesit-grammars.with-all-grammars
|
|
||||||
treesit-auto
|
|
||||||
apheleia
|
|
||||||
flymake-shellcheck
|
|
||||||
flymake-yamllint
|
|
||||||
flymake-clippy
|
|
||||||
flymake-eslint
|
|
||||||
magit
|
|
||||||
forge
|
|
||||||
nix-mode
|
|
||||||
lua-mode
|
|
||||||
python-docstring
|
|
||||||
python-pytest
|
|
||||||
auctex
|
|
||||||
markdown-mode
|
|
||||||
pandoc-mode
|
|
||||||
scad-mode
|
|
||||||
]
|
|
|
@ -1,39 +0,0 @@
|
||||||
davmail.server=true
|
|
||||||
davmail.mode=O365Manual
|
|
||||||
davmail.url=https://outlook.office365.com/EWS/Exchange.asmx
|
|
||||||
davmail.imapPort=1144
|
|
||||||
davmail.smtpPort=1026
|
|
||||||
davmail.caldavPort=1080
|
|
||||||
davmail.enableKeepAlive=true
|
|
||||||
davmail.logFilePath=/tmp/davmail.log
|
|
||||||
davmail.enableKerberos=false
|
|
||||||
davmail.forceActiveSyncUpdate=false
|
|
||||||
davmail.imapAutoExpunge=true
|
|
||||||
davmail.useSystemProxies=false
|
|
||||||
davmail.caldavEditNotifications=false
|
|
||||||
davmail.ssl.nosecuresmtp=false
|
|
||||||
davmail.caldavPastDelay=0
|
|
||||||
log4j.logger.httpclient.wire=WARN
|
|
||||||
davmail.popMarkReadOnRetr=false
|
|
||||||
davmail.ssl.nosecureimap=false
|
|
||||||
davmail.disableTrayActivitySwitch=true
|
|
||||||
davmail.caldavAutoSchedule=true
|
|
||||||
davmail.enableProxy=false
|
|
||||||
davmail.smtpSaveInSent=false
|
|
||||||
davmail.ssl.nosecurepop=false
|
|
||||||
log4j.rootLogger=WARN
|
|
||||||
log4j.logger.davmail=DEBUG
|
|
||||||
davmail.ssl.clientKeystorePass=
|
|
||||||
log4j.logger.org.apache.http.conn.ssl=WARN
|
|
||||||
davmail.sentKeepDelay=0
|
|
||||||
davmail.ssl.nosecureldap=false
|
|
||||||
davmail.imapAlwaysApproxMsgSize=true
|
|
||||||
davmail.ssl.nosecurecaldav=false
|
|
||||||
davmail.showStartupBanner=false
|
|
||||||
log4j.logger.httpclient=WARN
|
|
||||||
log4j.logger.org.apache.http.wire=WARN
|
|
||||||
davmail.disableGuiNotifications=true
|
|
||||||
davmail.disableUpdateCheck=true
|
|
||||||
log4j.logger.org.apache.http=WARN
|
|
||||||
davmail.carddavReadPhoto=true
|
|
||||||
davmail.keepDelay=30
|
|
|
@ -1,175 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellScriptBin "davmail-setup" ''
|
|
||||||
systemctl --user restart davmail # Ensure config file is present
|
|
||||||
systemctl --user stop davmail
|
|
||||||
${pkgs.davmail}/bin/davmail -n ~/.davmail.properties
|
|
||||||
systemctl --user restart davmail
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
accounts.email = {
|
|
||||||
maildirBasePath = "Mail";
|
|
||||||
accounts =
|
|
||||||
let
|
|
||||||
realName = "Evie Litherland-Smith";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
proton =
|
|
||||||
let
|
|
||||||
address = "e.litherlandsmith@proton.me";
|
|
||||||
host = "127.0.0.1";
|
|
||||||
tls.enable = false;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit realName address;
|
|
||||||
primary = true;
|
|
||||||
maildir.path = "Proton";
|
|
||||||
imap = {
|
|
||||||
inherit host tls;
|
|
||||||
port = 1143;
|
|
||||||
};
|
|
||||||
smtp = {
|
|
||||||
inherit host tls;
|
|
||||||
port = 1025;
|
|
||||||
};
|
|
||||||
aliases = [
|
|
||||||
"evie@xenia.me.uk"
|
|
||||||
"evie@litherlandsmith.slmail.me"
|
|
||||||
];
|
|
||||||
userName = address;
|
|
||||||
passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}";
|
|
||||||
mu.enable = true;
|
|
||||||
msmtp = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = {
|
|
||||||
tls = "off";
|
|
||||||
auth = "login";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mbsync = {
|
|
||||||
enable = true;
|
|
||||||
create = "both";
|
|
||||||
expunge = "both";
|
|
||||||
remove = "both";
|
|
||||||
patterns = [
|
|
||||||
"*"
|
|
||||||
"!All Mail"
|
|
||||||
"!Labels*"
|
|
||||||
"!Starred"
|
|
||||||
"!Recovered Messages"
|
|
||||||
];
|
|
||||||
subFolders = "Verbatim";
|
|
||||||
extraConfig.account.AuthMechs = "LOGIN";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
icloud =
|
|
||||||
let
|
|
||||||
address = "e.litherlandsmith@icloud.com";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit realName address;
|
|
||||||
primary = false;
|
|
||||||
maildir.path = "iCloud";
|
|
||||||
imap.host = "imap.mail.me.com";
|
|
||||||
smtp.host = "smtp.mail.me.com";
|
|
||||||
userName = address;
|
|
||||||
passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}";
|
|
||||||
mu.enable = true;
|
|
||||||
msmtp.enable = true;
|
|
||||||
mbsync = {
|
|
||||||
enable = true;
|
|
||||||
create = "both";
|
|
||||||
expunge = "both";
|
|
||||||
remove = "both";
|
|
||||||
patterns = [
|
|
||||||
"*"
|
|
||||||
"!Notes"
|
|
||||||
];
|
|
||||||
subFolders = "Verbatim";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
outlook =
|
|
||||||
let
|
|
||||||
address = "evie.litherland-smith@ukaea.uk";
|
|
||||||
host = "127.0.0.1";
|
|
||||||
tls.enable = false;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit realName address;
|
|
||||||
primary = false;
|
|
||||||
maildir.path = "Outlook";
|
|
||||||
imap = {
|
|
||||||
inherit host tls;
|
|
||||||
port = 1144;
|
|
||||||
};
|
|
||||||
smtp = {
|
|
||||||
inherit host tls;
|
|
||||||
port = 1026;
|
|
||||||
};
|
|
||||||
aliases = [ "elitherl@jet.uk" ];
|
|
||||||
userName = address;
|
|
||||||
passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}";
|
|
||||||
mu.enable = true;
|
|
||||||
msmtp = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = {
|
|
||||||
tls = "off";
|
|
||||||
auth = "login";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mbsync = {
|
|
||||||
enable = true;
|
|
||||||
create = "both";
|
|
||||||
expunge = "both";
|
|
||||||
remove = "both";
|
|
||||||
patterns = [
|
|
||||||
"*"
|
|
||||||
"!Conversation History"
|
|
||||||
"!Snoozed"
|
|
||||||
"!Social Activity Notifications"
|
|
||||||
"!Sync Issues*"
|
|
||||||
"!Unsent Messages"
|
|
||||||
];
|
|
||||||
subFolders = "Verbatim";
|
|
||||||
extraConfig.account.AuthMechs = "LOGIN";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
mu.enable = true;
|
|
||||||
msmtp.enable = true;
|
|
||||||
mbsync = {
|
|
||||||
enable = true;
|
|
||||||
groups.inboxes = {
|
|
||||||
proton = [ "INBOX" ];
|
|
||||||
icloud = [ "INBOX" ];
|
|
||||||
outlook = [ "INBOX" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.mbsync = {
|
|
||||||
inherit (config.programs.mbsync) enable package;
|
|
||||||
frequency = "*:0/30"; # Every 30 minutes
|
|
||||||
verbose = true;
|
|
||||||
preExec = null;
|
|
||||||
postExec = null;
|
|
||||||
};
|
|
||||||
systemd.user.services.davmail = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Davmail server";
|
|
||||||
Wants = [ "network-online.target" ];
|
|
||||||
After = [ "network-online.target" ];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Environment = [ "PATH=/run/current-system/sw/bin/:$PATH" ];
|
|
||||||
Restart = "always";
|
|
||||||
ExecStartPre = with config.home; ''
|
|
||||||
/bin/sh -c "if [ ! -f ${homeDirectory}/.davmail.properties ]; then cp ${./davmail.properties} ${homeDirectory}/.davmail.properties; fi; chmod 644 ${homeDirectory}/.davmail.properties"
|
|
||||||
'';
|
|
||||||
ExecStart = "${pkgs.davmail}/bin/davmail -notray ${config.home.homeDirectory}/.davmail.properties";
|
|
||||||
};
|
|
||||||
Install.WantedBy = [ "default.target" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
--
|
|
||||||
Evelyn Litherland-Smith (she/they)
|
|
||||||
email: evie@xenia.me.uk
|
|
|
@ -1,5 +0,0 @@
|
||||||
--
|
|
||||||
Evelyn Litherland-Smith (she/they)
|
|
||||||
Spectroscopy Diagnostic Physicist
|
|
||||||
Plasma Science and Fusion Operations
|
|
||||||
UK Atomic Energy Authority
|
|
|
@ -1,24 +0,0 @@
|
||||||
{ config, lib, ... }:
|
|
||||||
{
|
|
||||||
programs.fuzzel = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
use-bold = true;
|
|
||||||
icon-theme = config.gtk.iconTheme.name;
|
|
||||||
icons-enabled = true;
|
|
||||||
fields = "filename,name,generic,exec";
|
|
||||||
fuzzy = true;
|
|
||||||
filter-desktop = true;
|
|
||||||
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
|
|
||||||
anchor = "center";
|
|
||||||
layer = "overlay";
|
|
||||||
};
|
|
||||||
border = {
|
|
||||||
width = 2;
|
|
||||||
radius = 10;
|
|
||||||
};
|
|
||||||
colors.border = lib.mkForce "${config.lib.stylix.scheme.base0E}ff";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
{ lib, pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.gpg.enable = true;
|
|
||||||
services.gpg-agent = {
|
|
||||||
enable = true;
|
|
||||||
pinentryPackage = lib.mkDefault pkgs.pinentry-all;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,398 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./udiskie.nix
|
|
||||||
./waybar.nix
|
|
||||||
./fuzzel.nix
|
|
||||||
./mako.nix
|
|
||||||
./avizo.nix
|
|
||||||
./wlogout.nix
|
|
||||||
./swww.nix
|
|
||||||
];
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellScriptBin "protonmail-setup-bridge" ''
|
|
||||||
pkill -9 -f protonmail-bridge
|
|
||||||
PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -c
|
|
||||||
${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl dispatch exec "PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
stylix.targets.hyprlock.enable = false; # TODO maybe re-enable once I've checked what it does
|
|
||||||
services = {
|
|
||||||
kanshi.systemdTarget = "hyprland-session.target";
|
|
||||||
gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
|
||||||
hyprpaper.enable = lib.mkForce false;
|
|
||||||
hypridle = {
|
|
||||||
enable = true;
|
|
||||||
settings =
|
|
||||||
let
|
|
||||||
hyprctl = "${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl";
|
|
||||||
hyprlock = "${config.programs.hyprlock.package}/bin/hyprlock";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
general = {
|
|
||||||
after_sleep_cmd = "${hyprctl} dispatch dpms on";
|
|
||||||
ignore_dbus_inhibit = false;
|
|
||||||
lock_cmd = "${hyprlock}";
|
|
||||||
};
|
|
||||||
|
|
||||||
listener = [
|
|
||||||
{
|
|
||||||
timeout = 900;
|
|
||||||
on-timeout = "${hyprlock}";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 1200;
|
|
||||||
on-timeout = "${hyprctl} dispatch dpms off";
|
|
||||||
on-resume = "${hyprctl} dispatch dpms on";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
waybar.systemd.target = "hyprland-session.target";
|
|
||||||
hyprlock =
|
|
||||||
let
|
|
||||||
font = config.stylix.fonts.sansSerif.name;
|
|
||||||
scheme = config.lib.stylix.scheme;
|
|
||||||
accent = scheme.base0E;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
hide_cursor = true;
|
|
||||||
grace = 5;
|
|
||||||
ignore_emptry_input = true;
|
|
||||||
};
|
|
||||||
background = [
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
path = "screenshot";
|
|
||||||
blur_passes = 3;
|
|
||||||
blur_size = 8;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
label = [
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
text = "cmd[update:30000] echo \"$(date +\"%R\")\"";
|
|
||||||
color = "0xff${scheme.base05}";
|
|
||||||
font_size = 90;
|
|
||||||
font_family = font;
|
|
||||||
position = "-30, 0";
|
|
||||||
halign = "right";
|
|
||||||
valign = "top";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
text = "cmd[update:43200000] echo \"$(date +\"%A,%e %B %Y\")\"";
|
|
||||||
color = "0xff${scheme.base05}";
|
|
||||||
font_size = 25;
|
|
||||||
font_family = font;
|
|
||||||
position = "-30, -150";
|
|
||||||
halign = "right";
|
|
||||||
valign = "top";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
image = [
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
path = "${./pfp/personal.png}";
|
|
||||||
size = 100;
|
|
||||||
border_color = "0xff${accent}";
|
|
||||||
position = "0, 75";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
input-field = [
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
size = "300, 60";
|
|
||||||
outline_thickness = 2;
|
|
||||||
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
|
||||||
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
|
||||||
dots_center = true;
|
|
||||||
outer_color = "0xff${accent}";
|
|
||||||
inner_color = "0xff${scheme.base00}";
|
|
||||||
font_color = "0xff${scheme.base05}";
|
|
||||||
fade_on_empty = false;
|
|
||||||
placeholder_text = " Logged in as <span foreground=\"##${accent}\">$USER</span>";
|
|
||||||
check_color = "0xff${scheme.blue}";
|
|
||||||
fail_color = "0xff${scheme.red}";
|
|
||||||
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
|
|
||||||
hide_input = false;
|
|
||||||
position = "0, -50";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = osConfig.programs.hyprland.package;
|
|
||||||
xwayland.enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
settings = {
|
|
||||||
monitor = [ ",preferred,auto,auto" ];
|
|
||||||
exec-once = [
|
|
||||||
"systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME"
|
|
||||||
"${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
|
||||||
"${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
|
|
||||||
"PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
|
|
||||||
"${pkgs.swww}/bin/swww-daemon"
|
|
||||||
"sleep 5; systemctl --user start dynamic-wallpaper.service"
|
|
||||||
"sleep 5; ${pkgs.dex}/bin/dex -a"
|
|
||||||
];
|
|
||||||
gestures.workspace_swipe = true;
|
|
||||||
general = {
|
|
||||||
layout = "master";
|
|
||||||
gaps_in = 3;
|
|
||||||
gaps_out = 5;
|
|
||||||
"col.active_border" = lib.mkForce "rgb(${config.lib.stylix.scheme.base0E})";
|
|
||||||
};
|
|
||||||
master = {
|
|
||||||
allow_small_split = true;
|
|
||||||
special_scale_factor = 0.95;
|
|
||||||
mfact = 0.5;
|
|
||||||
new_on_top = false;
|
|
||||||
orientation = "left";
|
|
||||||
inherit_fullscreen = false;
|
|
||||||
smart_resizing = false;
|
|
||||||
drop_at_cursor = true;
|
|
||||||
};
|
|
||||||
input = {
|
|
||||||
kb_layout = osConfig.services.xserver.xkb.layout;
|
|
||||||
follow_mouse = 1;
|
|
||||||
touchpad.natural_scroll = "yes";
|
|
||||||
};
|
|
||||||
decoration = {
|
|
||||||
rounding = 10;
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
size = 5;
|
|
||||||
passes = 3;
|
|
||||||
new_optimizations = true;
|
|
||||||
brightness = 1.0;
|
|
||||||
noise = 2.0e-2;
|
|
||||||
};
|
|
||||||
shadow = {
|
|
||||||
enabled = true;
|
|
||||||
range = 4;
|
|
||||||
render_power = 3;
|
|
||||||
ignore_window = true;
|
|
||||||
color = lib.mkForce "rgba(${config.lib.stylix.scheme.base00}0d)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
|
||||||
animation = [
|
|
||||||
"windows, 1, 7, myBezier"
|
|
||||||
"windowsOut, 1, 7, default, popin 80%"
|
|
||||||
"border, 1, 10, default"
|
|
||||||
"borderangle, 1, 8, default"
|
|
||||||
"fade, 1, 7, default"
|
|
||||||
"workspaces, 1, 6, default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
misc = {
|
|
||||||
disable_splash_rendering = true;
|
|
||||||
disable_autoreload = true;
|
|
||||||
mouse_move_enables_dpms = true;
|
|
||||||
key_press_enables_dpms = true;
|
|
||||||
};
|
|
||||||
xwayland.force_zero_scaling = true;
|
|
||||||
layerrule =
|
|
||||||
let
|
|
||||||
blur = x: "blur, ^(${x})$";
|
|
||||||
ignorealpha = x: "ignorealpha 0.3, ^(${x})$";
|
|
||||||
layers = [
|
|
||||||
"system-menu"
|
|
||||||
"gtk-layer-shell"
|
|
||||||
"notifications"
|
|
||||||
"launcher"
|
|
||||||
"logout_dialog"
|
|
||||||
"waybar"
|
|
||||||
"avizo"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
(lib.lists.forEach layers blur) ++ (lib.lists.forEach layers ignorealpha);
|
|
||||||
windowrule = [
|
|
||||||
# Float + move system windows
|
|
||||||
# Password prompts
|
|
||||||
"float, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
|
||||||
"center, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
|
||||||
"pin, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
|
||||||
"dimaround, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
|
||||||
"stayfocused, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
|
||||||
# Network and Bluetooth control panels
|
|
||||||
"float, pavucontrol|nm-connection-editor|overskride|io.github.kaii_lb.Overskride"
|
|
||||||
"size 800 600, pavucontrol|nm-connection-editor|overskride|io.github.kaii_lb.Overskride"
|
|
||||||
"move onscreen 100%-820 50,pavucontrol|nm-connection-editor|overskride|io.github.kaii_lb.Overskride"
|
|
||||||
# File browser and picker dialog
|
|
||||||
"float, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
|
||||||
"size 800 600, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
|
||||||
"center, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
|
||||||
# Matplotlib plots
|
|
||||||
"float, Matplotlib"
|
|
||||||
|
|
||||||
# Workspace rules
|
|
||||||
"workspace 2, (firefox|nyxt|org.qutebrowser.qutebrowser)" # Browser
|
|
||||||
"workspace 3, (signal|whatsapp-for-linux|WebCord|teams-for-linux|twinkle)" # Messaging
|
|
||||||
"workspace 4, (libreoffice|soffice)(.*)" # Documents
|
|
||||||
"workspace 5, (org.remmina.Remmina|Nxplayer.bin)" # Remote Desktop
|
|
||||||
"workspace 6, (PrusaSlicer)" # 3D Printing
|
|
||||||
"workspace 7, (lutris|page.kramo.Cartridges|org.prismlauncher.PrismLauncher)" # Gaming
|
|
||||||
"workspace 7 silent, (steam|steam_app)" # Gaming (Silent)
|
|
||||||
|
|
||||||
# PrismLauncher / Minecraft
|
|
||||||
"float, org.prismlauncher.PrismLauncher"
|
|
||||||
"center, org.prismlauncher.PrismLauncher"
|
|
||||||
"size 800 600, org.prismlauncher.PrismLauncher"
|
|
||||||
];
|
|
||||||
windowrulev2 = [
|
|
||||||
# Firefox PIP
|
|
||||||
"float, title:Picture-in-Picture|Library,class:firefox"
|
|
||||||
"size 750 400, title:Picture-in-Picture,class:firefox"
|
|
||||||
"size 800 800, title:Library,class:firefox"
|
|
||||||
"move onscreen 100%-775 100%-425, title:Picture-in-Picture,class:firefox"
|
|
||||||
"center, title:Library,class:firefox"
|
|
||||||
"pin, title:Picture-in-Picture,class:firefox"
|
|
||||||
|
|
||||||
# NautilusPreviewer (Sushi)
|
|
||||||
"float, class:org.gnome.NautilusPreviewer"
|
|
||||||
"center, class:org.gnome.NautilusPreviewer"
|
|
||||||
|
|
||||||
# Electron file picker dialog
|
|
||||||
"float, title:Open Files,class:electron"
|
|
||||||
"size 800 600, title:Open Files,class:electron"
|
|
||||||
"center, title:Open Files,class:electron"
|
|
||||||
|
|
||||||
# Inhibit idle when watching videos
|
|
||||||
"idleinhibit fullscreen, class:firefox|com.github.rafostar.Clapper"
|
|
||||||
|
|
||||||
# Inhibit idle when playing games
|
|
||||||
"idleinhibit always, class:(steam_app|Minecraft).*"
|
|
||||||
|
|
||||||
# LibreOffice
|
|
||||||
"suppressevent fullscreen maximize, class:(libreoffice|soffice)(.*)"
|
|
||||||
"float, title:Open,class:(libreoffice|soffice)(.*)"
|
|
||||||
|
|
||||||
# Steam
|
|
||||||
"float, title:Friends List,class:steam"
|
|
||||||
"size 400 600, title:Friends List,class:steam"
|
|
||||||
"float, title:(.*)(Chat),class:steam"
|
|
||||||
"size 800 600, title:(.*)(Chat),class:steam"
|
|
||||||
"float, title:Steam Settings,class:steam"
|
|
||||||
"size 800 600, title:Steam Settings,class:steam"
|
|
||||||
"float, title:(.*)(Controller Layout),class:steam"
|
|
||||||
"size 1200 800, title:(.*)(Controller Layout),class:steam"
|
|
||||||
|
|
||||||
# Remmina / NoMachine
|
|
||||||
"suppressevent fullscreen maximize, class:org.remmina.Remmina|Nxplayer.bin"
|
|
||||||
"float, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
|
|
||||||
"center, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
|
|
||||||
];
|
|
||||||
bind =
|
|
||||||
let
|
|
||||||
workspace = w: [
|
|
||||||
"SUPER, ${toString w}, moveworkspacetomonitor, ${toString w} current"
|
|
||||||
"SUPER, ${toString w}, workspace, ${toString w}"
|
|
||||||
"SUPER SHIFT, ${toString w}, movetoworkspace, ${toString w}"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
lib.lists.flatten (lib.lists.forEach (lib.lists.range 1 9) workspace)
|
|
||||||
++ [
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
# Open Hyprland wiki at correct version number
|
|
||||||
"CTRL_SHIFT, H, exec, xdg-open \"https://wiki.hyprland.org/$(${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl version -j | ${pkgs.jq}/bin/jq $args.tag | ${pkgs.gnused}/bin/sed s/v// | ${pkgs.gnused}/bin/sed s/\\\"//g)\""
|
|
||||||
|
|
||||||
"SUPER, F1, exec, ${config.programs.hyprlock.package}/bin/hyprlock"
|
|
||||||
"SUPER, P, exec, ${config.programs.wlogout.package}/bin/wlogout"
|
|
||||||
"SUPER, Q, killactive,"
|
|
||||||
"SUPER, V, togglefloating"
|
|
||||||
# "SUPER SHIFT, V, setfloating" ## TODO setfloating exists
|
|
||||||
# in newer version of Hyprland than mine
|
|
||||||
"SUPER SHIFT, V, moveactive, exact 1% 4%"
|
|
||||||
"SUPER SHIFT, V, resizeactive, exact 800 600"
|
|
||||||
"SUPER SHIFT, V, pin"
|
|
||||||
"SUPER, M, fullscreen, 1" # Maximise window
|
|
||||||
"SUPER SHIFT, M, fullscreen, 0" # Actual fullscreen
|
|
||||||
"SUPER, Z, exec, ${config.services.mako.package}/bin/makoctl restore"
|
|
||||||
"SUPER SHIFT, Z, exec, exec ${config.services.mako.package}/bin/makoctl dismiss -a"
|
|
||||||
|
|
||||||
# Common program shortcuts
|
|
||||||
"SUPER, Space, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
|
||||||
"SUPER, Return, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
|
||||||
"SUPER SHIFT, Return, exec, ${config.programs.emacs.finalPackage}/bin/emacsclient -c"
|
|
||||||
"SUPER, W, exec, ${config.programs.firefox.finalPackage}/bin/firefox"
|
|
||||||
"SUPER, F, exec, ${pkgs.nautilus}/bin/nautilus"
|
|
||||||
|
|
||||||
# Misc useful binds
|
|
||||||
",Print,exec,${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"
|
|
||||||
# ",XF86Calculator,exec,pkill rofi || ${config.programs.rofi.finalPackage}/bin/rofi -show calc"
|
|
||||||
|
|
||||||
# Movement binds
|
|
||||||
"SUPER, H, movefocus, l"
|
|
||||||
"SUPER, L, movefocus, r"
|
|
||||||
"SUPER, K, movefocus, u"
|
|
||||||
"SUPER, J, movefocus, d"
|
|
||||||
"SUPER SHIFT, H, movewindow, l"
|
|
||||||
"SUPER SHIFT, L, movewindow, r"
|
|
||||||
"SUPER SHIFT, K, movewindow, u"
|
|
||||||
"SUPER SHIFT, J, movewindow, d"
|
|
||||||
|
|
||||||
# Special workspaces
|
|
||||||
"SUPER, comma, workspace, m-1"
|
|
||||||
"SUPER SHIFT, comma, movetoworkspace, r-1"
|
|
||||||
"SUPER, period, workspace, m+1"
|
|
||||||
"SUPER SHIFT, period, movetoworkspace, r+1"
|
|
||||||
"SUPER, N, workspace, empty"
|
|
||||||
"SUPER SHIFT, N, movetoworkspace, empty"
|
|
||||||
"SUPER, minus, togglespecialworkspace"
|
|
||||||
"SUPER SHIFT, minus, movetoworkspace, special"
|
|
||||||
"SUPER, bracketright, focusmonitor, +1"
|
|
||||||
"SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1"
|
|
||||||
"SUPER, bracketleft, focusmonitor, -1"
|
|
||||||
"SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, -1"
|
|
||||||
"SUPER, O, focusurgentorlast"
|
|
||||||
];
|
|
||||||
bindl = [
|
|
||||||
# Sound
|
|
||||||
",XF86AudioMute,exec,${config.services.avizo.package}/bin/volumectl %"
|
|
||||||
",XF86AudioMicMute,exec,${config.services.avizo.package}/bin/volumectl -m %"
|
|
||||||
|
|
||||||
# Playback
|
|
||||||
",XF86AudioPlay,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
|
||||||
",XF86AudioStop,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
|
||||||
",XF86AudioPrev,exec,${pkgs.playerctl}/bin/playerctl previous"
|
|
||||||
",XF86AudioNext,exec,${pkgs.playerctl}/bin/playerctl next"
|
|
||||||
];
|
|
||||||
bindle = [
|
|
||||||
# Sound
|
|
||||||
",XF86AudioRaiseVolume,exec,${config.services.avizo.package}/bin/volumectl -u + 5"
|
|
||||||
",XF86AudioLowerVolume,exec,${config.services.avizo.package}/bin/volumectl -u - 5"
|
|
||||||
|
|
||||||
# Brightness
|
|
||||||
",XF86MonBrightnessUp,exec,${config.services.avizo.package}/bin/lightctl + 5"
|
|
||||||
",XF86MonBrightnessDown,exec,${config.services.avizo.package}/bin/lightctl - 5"
|
|
||||||
];
|
|
||||||
bindm = [
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
"SUPER, mouse:272, movewindow"
|
|
||||||
"SUPER, mouse:273, resizewindow"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{ config, lib, ... }:
|
|
||||||
{
|
|
||||||
services.mako = {
|
|
||||||
enable = true;
|
|
||||||
anchor = "top-right";
|
|
||||||
width = 600;
|
|
||||||
height = 600;
|
|
||||||
layer = "top";
|
|
||||||
markup = true;
|
|
||||||
maxVisible = 10;
|
|
||||||
icons = true;
|
|
||||||
iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}";
|
|
||||||
borderRadius = 10;
|
|
||||||
borderSize = 2;
|
|
||||||
borderColor = lib.mkForce config.lib.stylix.scheme.withHashtag.base0E;
|
|
||||||
defaultTimeout = (builtins.mul 5 1000); # 5s timeout
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
host = vpn.jetdata.eu
|
|
||||||
port = 943
|
|
||||||
username = elitherl
|
|
||||||
set-dns = 0
|
|
||||||
set-routes = 0
|
|
|
@ -1,5 +0,0 @@
|
||||||
host = vpn.ukaea.uk
|
|
||||||
port = 943
|
|
||||||
username = elitherl
|
|
||||||
set-dns = 1
|
|
||||||
set-routes = 1
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellScriptBin "ukaea-vpn-connect" ''
|
|
||||||
sudo ${pkgs.openfortivpn}/bin/openfortivpn --config=${./ukaea-vpn.conf}
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "jetdata-vpn-connect" ''
|
|
||||||
sudo ${pkgs.openfortivpn}/bin/openfortivpn --config=${./jetdata-vpn.conf}
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
../gpg/default.nix
|
|
||||||
../shell/git.nix
|
|
||||||
];
|
|
||||||
programs = {
|
|
||||||
gpg.enable = true;
|
|
||||||
password-store = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.pass-nodmenu.withExtensions (exts: with exts; [ pass-update ]);
|
|
||||||
settings = {
|
|
||||||
PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store";
|
|
||||||
PASSWORD_STORE_ENABLE_EXTENSIONS = "true";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
Binary file not shown.
Before Width: | Height: | Size: 178 KiB |
Binary file not shown.
Before Width: | Height: | Size: 22 KiB |
Binary file not shown.
Before Width: | Height: | Size: 112 KiB |
Binary file not shown.
Before Width: | Height: | Size: 21 KiB |
|
@ -1,23 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./python/default.nix
|
|
||||||
./lua/default.nix
|
|
||||||
];
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
## Linters
|
|
||||||
shellcheck
|
|
||||||
yamllint
|
|
||||||
|
|
||||||
## Formatters
|
|
||||||
nixfmt-rfc-style
|
|
||||||
shfmt
|
|
||||||
nodePackages.prettier
|
|
||||||
nodePackages.prettier-plugin-toml
|
|
||||||
|
|
||||||
## Language servers
|
|
||||||
nixd
|
|
||||||
rust-analyzer
|
|
||||||
nodePackages.typescript-language-server
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
(luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]))
|
|
||||||
lua-language-server
|
|
||||||
stylua
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
{
|
|
||||||
agg,
|
|
||||||
freetype,
|
|
||||||
buildLuarocksPackage,
|
|
||||||
fetchgit,
|
|
||||||
fetchurl,
|
|
||||||
lua,
|
|
||||||
luaOlder,
|
|
||||||
}:
|
|
||||||
buildLuarocksPackage {
|
|
||||||
pname = "graph-toolkit";
|
|
||||||
version = "scm-1";
|
|
||||||
knownRockspec =
|
|
||||||
(fetchurl {
|
|
||||||
url = "mirror://luarocks/graph-toolkit-scm-1.rockspec";
|
|
||||||
sha256 = "0hsrf7k45w8ri18mdrx44mv1kr4zfr5mg76cxi8nnr30ssrblvgb";
|
|
||||||
}).outPath;
|
|
||||||
src = fetchgit (
|
|
||||||
removeAttrs
|
|
||||||
(builtins.fromJSON ''
|
|
||||||
{
|
|
||||||
"url": "https://github.com/franko/graph-toolkit",
|
|
||||||
"rev": "126a11bdbb98faf785c373516a288b7fa609f824",
|
|
||||||
"date": "2015-01-02T08:44:01-08:00",
|
|
||||||
"path": "/nix/store/gbwbjrl4j42kaqk3pjzvmckmr6dimkd0-graph-toolkit",
|
|
||||||
"sha256": "1pqjpqfandi7brk2213vlq891bl8drb0q32m5wmf0l21li0l4zrp",
|
|
||||||
"hash": "sha256-N39CQaRBUOAqL1UMDFZuiK6QEKZ7BCFmXic2qxy+Et8=",
|
|
||||||
"fetchLFS": false,
|
|
||||||
"fetchSubmodules": true,
|
|
||||||
"deepClone": false,
|
|
||||||
"leaveDotGit": false
|
|
||||||
}
|
|
||||||
'')
|
|
||||||
[
|
|
||||||
"date"
|
|
||||||
"path"
|
|
||||||
"sha256"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
disabled = luaOlder "5.1";
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
lua
|
|
||||||
agg
|
|
||||||
freetype
|
|
||||||
];
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
homepage = "http://franko.github.io/graph-toolkit/";
|
|
||||||
description = "Lua Graphics Toolkit";
|
|
||||||
license.fullName = "GPL-3";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
{
|
|
||||||
buildLuarocksPackage,
|
|
||||||
fetchurl,
|
|
||||||
luaAtLeast,
|
|
||||||
luaOlder,
|
|
||||||
callPackage,
|
|
||||||
luajit,
|
|
||||||
openblas,
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
xsys = callPackage ./xsys.nix { };
|
|
||||||
in
|
|
||||||
buildLuarocksPackage {
|
|
||||||
pname = "sci";
|
|
||||||
version = "1.0.0.beta12-1";
|
|
||||||
knownRockspec =
|
|
||||||
(fetchurl {
|
|
||||||
url = "mirror://luarocks/sci-1.0.0.beta12-1.rockspec";
|
|
||||||
sha256 = "0lprn9x4zw767hdz8lyxmwrrfyn5xj3x50pm9b4qiwy8992mg00r";
|
|
||||||
}).outPath;
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://github.com/stepelu/lua-sci/archive/v1.0.0-beta12.tar.gz";
|
|
||||||
sha256 = "0a45r7n13gfqckpdp1bmizqvjadn8nc5d6ff9gjw860g3i75sy2h";
|
|
||||||
};
|
|
||||||
|
|
||||||
disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
luajit
|
|
||||||
xsys
|
|
||||||
openblas
|
|
||||||
];
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
homepage = "https://github.com/stepelu/lua-sci";
|
|
||||||
description = "Scientific Computing with LuaJIT";
|
|
||||||
license.fullName = "MIT";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
buildLuarocksPackage,
|
|
||||||
fetchurl,
|
|
||||||
luaAtLeast,
|
|
||||||
luaOlder,
|
|
||||||
luajit,
|
|
||||||
}:
|
|
||||||
buildLuarocksPackage {
|
|
||||||
pname = "xsys";
|
|
||||||
version = "1.0.2-1";
|
|
||||||
knownRockspec =
|
|
||||||
(fetchurl {
|
|
||||||
url = "mirror://luarocks/xsys-1.0.2-1.rockspec";
|
|
||||||
sha256 = "0jlyrwbzh6fi68msdynp4bbihyww4i3yk0qh859xlwqhfy5cza7p";
|
|
||||||
}).outPath;
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://github.com/stepelu/lua-xsys/archive/v1.0.2.tar.gz";
|
|
||||||
sha256 = "1zwrlp6bghq8c12kyqc1ic7mrn8lf3d42755h8q2wxwhy1i3xqyh";
|
|
||||||
};
|
|
||||||
|
|
||||||
disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
|
|
||||||
propagatedBuildInputs = [ luajit ];
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
homepage = "http://scilua.org/xsys.html";
|
|
||||||
description = "LuaJIT General Purpose Routines";
|
|
||||||
license.fullName = "MIT";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
let
|
|
||||||
pythonEnv = (
|
|
||||||
pkgs.python312.withPackages (
|
|
||||||
ps: with ps; [
|
|
||||||
python-lsp-server
|
|
||||||
isort
|
|
||||||
flake8
|
|
||||||
mypy
|
|
||||||
numpy
|
|
||||||
xarray
|
|
||||||
netcdf4
|
|
||||||
matplotlib
|
|
||||||
]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
pkgs.ruff
|
|
||||||
pythonEnv
|
|
||||||
];
|
|
||||||
xdg.configFile."ruff/pyproject.toml".source = ./ruff.toml;
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
{
|
|
||||||
pkgs ? import <nixpkgs> { },
|
|
||||||
python3 ? pkgs.python3,
|
|
||||||
extraPackages ? with pkgs; [ uv ],
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (pkgs) lib;
|
|
||||||
ldlibs = lib.makeLibraryPath (
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
stdenv.cc.cc
|
|
||||||
glibc
|
|
||||||
zlib
|
|
||||||
zstd
|
|
||||||
]
|
|
||||||
);
|
|
||||||
pythonWrapped = pkgs.symlinkJoin {
|
|
||||||
name = "python";
|
|
||||||
paths = [ python3 ];
|
|
||||||
buildInputs = [ pkgs.makeWrapper ];
|
|
||||||
postBuild = ''
|
|
||||||
for file in $out/bin/*; do wrapProgram "$file" --prefix LD_LIBRARY_PATH : "${ldlibs}"; done
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
pkgs.mkShellNoCC {
|
|
||||||
packages = [ pythonWrapped ] ++ extraPackages;
|
|
||||||
shellHook = ''
|
|
||||||
[ -f .venv/bin/activate ] && source .venv/bin/activate
|
|
||||||
'';
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
[lint]
|
|
||||||
select = [
|
|
||||||
"F", "E4", "E7", "E9", # Defaults
|
|
||||||
"W", # pycodestyle warnings
|
|
||||||
"B", # Flake8 bugbear rules
|
|
||||||
"PD", # Pandas vet rules
|
|
||||||
"NPY", # NumPy specific rules
|
|
||||||
"NPY201", # NumPy 2.0 deprecation warnings
|
|
||||||
"RUF", # Ruff specific rules
|
|
||||||
"PERF1", "PERF2", # Performance lints from Perflint
|
|
||||||
"E101", # Mixed spaces and tabs
|
|
||||||
"E501", # Line too long
|
|
||||||
"C901", # Complex structure
|
|
||||||
"I001", # Import block un-sorted / un-formatted
|
|
||||||
"I002", # Missing required import
|
|
||||||
"N804", # First argument of class method should be cls
|
|
||||||
"N805" # First argument of method should be self
|
|
||||||
]
|
|
||||||
ignore = [
|
|
||||||
"W191", # Ignore due to conflict with ruff formatter
|
|
||||||
"E111", # Ignore due to conflict with ruff formatter
|
|
||||||
"E114", # Ignore due to conflict with ruff formatter
|
|
||||||
"E117", # Ignore due to conflict with ruff formatter
|
|
||||||
"D206", # Ignore due to conflict with ruff formatter
|
|
||||||
"D300", # Ignore due to conflict with ruff formatter
|
|
||||||
"Q000", # Ignore due to conflict with ruff formatter
|
|
||||||
"Q001", # Ignore due to conflict with ruff formatter
|
|
||||||
"Q002", # Ignore due to conflict with ruff formatter
|
|
||||||
"Q003", # Ignore due to conflict with ruff formatter
|
|
||||||
"COM812", # Ignore due to conflict with ruff formatter
|
|
||||||
"COM819", # Ignore due to conflict with ruff formatter
|
|
||||||
"ISC001", # Ignore due to conflict with ruff formatter
|
|
||||||
"ISC002" # Ignore due to conflict with ruff formatter
|
|
||||||
]
|
|
||||||
unfixable = ["W", "B", "PD", "NPY", "RUF", "E101", "E501", "C901", "I001", "I002"]
|
|
||||||
|
|
||||||
[format]
|
|
||||||
docstring-code-format = false
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellScriptBin "sync-git" (builtins.readFile ./shell/sync-git.sh))
|
|
||||||
(pkgs.writeShellScriptBin "ensure-pass" (builtins.readFile ./shell/ensure-pass.sh))
|
|
||||||
(pkgs.writeShellScriptBin "clean-config" (builtins.readFile ./shell/clean-config.sh))
|
|
||||||
(pkgs.writeShellScriptBin "rsync-local-config" (builtins.readFile ./shell/rsync-local-config.sh))
|
|
||||||
(pkgs.writeShellScriptBin "xdg-query-program" (builtins.readFile ./shell/xdg-query-program.sh))
|
|
||||||
(pkgs.writeShellScriptBin "mount-onedrive" (builtins.readFile ./shell/mount-onedrive.sh))
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
shopt -s extglob
|
|
||||||
rm -rf ~/.config/!(dconf|protonmail|Signal|whatsapp-for-linux)
|
|
|
@ -1,26 +0,0 @@
|
||||||
# Email
|
|
||||||
EMAIL="e.litherlandsmith@proton.me"
|
|
||||||
secret-tool lookup email "$EMAIL" >/dev/null || (
|
|
||||||
echo "Insert pass from protonmail-bridge"
|
|
||||||
secret-tool store --label="Proton Mail mbsync" email "$EMAIL"
|
|
||||||
)
|
|
||||||
|
|
||||||
EMAIL="e.litherlandsmith@icloud.com"
|
|
||||||
secret-tool lookup clear "$EMAIL"
|
|
||||||
pass show identity/apple.com/mbsync | head -n1 | secret-tool store --label="iCloud mbsync" email "$EMAIL"
|
|
||||||
|
|
||||||
EMAIL="evie.litherland-smith@ukaea.uk"
|
|
||||||
secret-tool clear email "$EMAIL"
|
|
||||||
pass show work/microsoftonline.com | head -n1 | secret-tool store --label="Outlook mbsync" email "$EMAIL"
|
|
||||||
|
|
||||||
# Calendar
|
|
||||||
URL="dav.xenia.me.uk"
|
|
||||||
USER="pixelifytica"
|
|
||||||
secret-tool clear url "$URL" user "$USER"
|
|
||||||
pass show "server/xenia.me.uk/$URL" | head -n1 | secret-tool store --label="Personal calendar vdirsyncer" url "$URL" user "$USER"
|
|
||||||
|
|
||||||
# GitHub API token
|
|
||||||
HOST="api.github.com"
|
|
||||||
USER="pixelifytica^forge"
|
|
||||||
secret-tool clear host "$HOST" user "$USER"
|
|
||||||
pass show "api/$HOST" | head -n1 | secret-tool store --label="Forge GitHub Token" host "$HOST" user "$USER"
|
|
|
@ -1,3 +0,0 @@
|
||||||
ONEDRIVE="$HOME/OneDrive"
|
|
||||||
[ -d "$ONEDRIVE" ] || mkdir -p "$ONEDRIVE"
|
|
||||||
[ -z "$(ls -A "$ONEDRIVE")" ] && rclone --vfs-cache-mode writes mount --daemon OneDrive: "$ONEDRIVE"
|
|
|
@ -1,23 +0,0 @@
|
||||||
HOSTS=("$@")
|
|
||||||
# Config files
|
|
||||||
for TARGET in ".inputrc" ".config/starship.toml"; do
|
|
||||||
SOURCE="$HOME/$TARGET"
|
|
||||||
echo "--- $SOURCE ---"
|
|
||||||
TMP_TARGET=/tmp/rsync-local-config
|
|
||||||
TMP_SOURCE=$TMP_TARGET
|
|
||||||
NIX_SED="sed -i 's|/nix/.*/bin/||g'"
|
|
||||||
NIX_REPLACE="$NIX_SED $TMP_TARGET"
|
|
||||||
if [[ -e $SOURCE ]]; then
|
|
||||||
if [[ -d $SOURCE ]]; then
|
|
||||||
SOURCE=$SOURCE/
|
|
||||||
TMP_SOURCE=$TMP_SOURCE/
|
|
||||||
NIX_REPLACE="fd -g '**' $TMP_TARGET -tfile -x $NIX_SED {};"
|
|
||||||
fi
|
|
||||||
rsync -avzL --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$SOURCE" $TMP_TARGET
|
|
||||||
sh -c "$NIX_REPLACE"
|
|
||||||
for HOST in "${HOSTS[@]}"; do
|
|
||||||
rsync -avzL --delete --exclude=".git*" $TMP_SOURCE "$HOST:$TARGET"
|
|
||||||
done
|
|
||||||
rm -rf $TMP_SOURCE
|
|
||||||
fi
|
|
||||||
done
|
|
|
@ -1,45 +0,0 @@
|
||||||
# Sync common directories, setting url to ensure it's up-to-date first
|
|
||||||
SYNC_DIRS=(
|
|
||||||
"$HOME/.password-store/"
|
|
||||||
"$HOME/Documents/org/"
|
|
||||||
"$HOME/Documents/library/"
|
|
||||||
)
|
|
||||||
SYNC_URLS=(
|
|
||||||
"https://git.xenia.me.uk/pixelifytica/pass.git"
|
|
||||||
"https://git.xenia.me.uk/pixelifytica/org.git"
|
|
||||||
"https://git.xenia.me.uk/pixelifytica/library.git"
|
|
||||||
)
|
|
||||||
|
|
||||||
for i in "${!SYNC_DIRS[@]}"; do
|
|
||||||
DIRECTORY="${SYNC_DIRS[$i]}"
|
|
||||||
URL="${SYNC_URLS[$i]}"
|
|
||||||
echo "--- sync: $DIRECTORY ---"
|
|
||||||
if [ ! -d "$DIRECTORY" ]; then
|
|
||||||
git clone "$URL" "$DIRECTORY"
|
|
||||||
fi
|
|
||||||
(
|
|
||||||
cd "$DIRECTORY" || exit
|
|
||||||
git remote set-url origin "$URL"
|
|
||||||
if [ "$(git branch --show-current)" = "main" ]; then
|
|
||||||
git branch --set-upstream-to=origin/main main
|
|
||||||
fi
|
|
||||||
git pull --ff --ff-only
|
|
||||||
git submodule update --remote --recursive
|
|
||||||
git-sync -ns
|
|
||||||
git status --porcelain
|
|
||||||
)
|
|
||||||
done
|
|
||||||
|
|
||||||
# Clone ~/.config/emacs/ if it doesn't exist, pull otherwise
|
|
||||||
EMACS_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/emacs"
|
|
||||||
EMACS_URL="https://git.xenia.me.uk/pixelifytica/emacs.git"
|
|
||||||
if [ -d "$EMACS_DIR" ]; then
|
|
||||||
git -C "$EMACS_DIR" remote set-url origin "$EMACS_URL"
|
|
||||||
git -C "$EMACS_DIR" pull --ff --ff-only
|
|
||||||
else
|
|
||||||
git clone "$EMACS_URL" "$EMACS_DIR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Cleanup legacy Emacs config file/directory
|
|
||||||
[ -f "$HOME/.emacs" ] && rm "$HOME/.emacs"
|
|
||||||
[ -d "$HOME/.emacs.d" ] && rm -r "$HOME/.emacs.d"
|
|
|
@ -1,3 +0,0 @@
|
||||||
FILETYPE=$(xdg-mime query filetype "$@")
|
|
||||||
DEFAULT=$(xdg-mime query default "$FILETYPE")
|
|
||||||
echo "$FILETYPE -> $DEFAULT"
|
|
|
@ -1,100 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./git.nix
|
|
||||||
./ssh.nix
|
|
||||||
./starship.nix
|
|
||||||
];
|
|
||||||
home.shellAliases = {
|
|
||||||
sync-all = "sync-git; vdirsyncer sync; mbsync -a";
|
|
||||||
sync-and-shutdown = "sync-all && shutdown now";
|
|
||||||
protonup = "sudo wg-quick up protonvpn && sudo wg";
|
|
||||||
protondown = "sudo wg-quick down protonvpn";
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
# Shells
|
|
||||||
bash.enable = true;
|
|
||||||
nushell.enable = true;
|
|
||||||
# CLI programs and utilities
|
|
||||||
btop.enable = true;
|
|
||||||
carapace.enable = true;
|
|
||||||
fd.enable = true;
|
|
||||||
jq.enable = true;
|
|
||||||
ripgrep.enable = true;
|
|
||||||
bat = {
|
|
||||||
enable = true;
|
|
||||||
config.style = "plain,numbers,changes";
|
|
||||||
};
|
|
||||||
cava = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
color = with config.lib.stylix.colors.withHashtag; {
|
|
||||||
gradient = 1;
|
|
||||||
gradient_count = 6;
|
|
||||||
gradient_color_1 = "'${red}'";
|
|
||||||
gradient_color_2 = "'${yellow}'";
|
|
||||||
gradient_color_3 = "'${green}'";
|
|
||||||
gradient_color_4 = "'${cyan}'";
|
|
||||||
gradient_color_5 = "'${blue}'";
|
|
||||||
gradient_color_6 = "'${magenta}'";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
eza = {
|
|
||||||
enable = true;
|
|
||||||
git = true;
|
|
||||||
icons = "auto";
|
|
||||||
extraOptions = [
|
|
||||||
"--header"
|
|
||||||
"--time-style=iso"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
fzf = {
|
|
||||||
enable = true;
|
|
||||||
defaultCommand = "${pkgs.fd}/bin/fd --type f";
|
|
||||||
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
|
||||||
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
|
|
||||||
colors = {
|
|
||||||
bg = lib.mkForce "-1";
|
|
||||||
"bg+" = lib.mkForce "-1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
hyfetch = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
preset = "transgender";
|
|
||||||
mode = "rgb";
|
|
||||||
light_dark = config.lib.stylix.scheme.variant;
|
|
||||||
lightness = 0.4;
|
|
||||||
color_align = {
|
|
||||||
mode = "horizontal";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
readline = {
|
|
||||||
enable = true;
|
|
||||||
variables = {
|
|
||||||
bell-style = "visible";
|
|
||||||
blink-matching-paren = "On";
|
|
||||||
colored-completion-prefix = "On";
|
|
||||||
colored-stats = "On";
|
|
||||||
completion-ignore-case = "On";
|
|
||||||
completion-map-case = "On";
|
|
||||||
editing-mode = "emacs";
|
|
||||||
expand-tilde = "On";
|
|
||||||
mark-directories = "On";
|
|
||||||
mark-symlinked-directories = "On";
|
|
||||||
visible-stats = "On";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
home.packages = [ pkgs.git-sync ];
|
|
||||||
programs.git =
|
|
||||||
let
|
|
||||||
package = pkgs.git.override {
|
|
||||||
withLibsecret = true;
|
|
||||||
withSsh = true;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit package;
|
|
||||||
enable = true;
|
|
||||||
userName = "Evie Litherland-Smith";
|
|
||||||
userEmail = lib.mkDefault "evie@xenia.me.uk";
|
|
||||||
delta = {
|
|
||||||
enable = true;
|
|
||||||
options = {
|
|
||||||
line-numbers = true;
|
|
||||||
hyprlinks = true;
|
|
||||||
navigate = true;
|
|
||||||
side-by-side = true;
|
|
||||||
syntax-theme = lib.mkIf config.programs.bat.enable config.programs.bat.config.theme;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
attributes = [
|
|
||||||
"*.gpg filter=gpg diff=gpg"
|
|
||||||
"*.asc filter=gpg diff=gpg"
|
|
||||||
];
|
|
||||||
extraConfig = {
|
|
||||||
github.user = "pixelifytica";
|
|
||||||
pull.rebase = false;
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
merge.conflictstyle = "diff3";
|
|
||||||
credential.helper = "${package}/bin/git-credential-libsecret";
|
|
||||||
diff = {
|
|
||||||
colorMoved = "default";
|
|
||||||
gpg.textconv = "gpg --no-tty --decrypt";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
rclone
|
|
||||||
sshfs
|
|
||||||
(writeShellScriptBin "ssh-keygen-defaults" ''ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"'')
|
|
||||||
];
|
|
||||||
programs.ssh = {
|
|
||||||
enable = true;
|
|
||||||
addKeysToAgent = "yes";
|
|
||||||
forwardAgent = true;
|
|
||||||
compression = true;
|
|
||||||
serverAliveInterval = 15;
|
|
||||||
serverAliveCountMax = 5;
|
|
||||||
controlMaster = "auto";
|
|
||||||
controlPersist = "10s";
|
|
||||||
extraConfig = ''
|
|
||||||
SetEnv TERM=xterm-256color
|
|
||||||
'';
|
|
||||||
matchBlocks = {
|
|
||||||
"git*".user = "git";
|
|
||||||
"legion" = {
|
|
||||||
user = "pixelifytica";
|
|
||||||
hostname = "192.168.0.31";
|
|
||||||
};
|
|
||||||
"vanguard" = {
|
|
||||||
user = "pixelifytica";
|
|
||||||
hostname = "192.168.0.90";
|
|
||||||
};
|
|
||||||
"ionos" = {
|
|
||||||
user = "root";
|
|
||||||
hostname = "77.68.67.133";
|
|
||||||
};
|
|
||||||
"freia" = {
|
|
||||||
user = "elitherl";
|
|
||||||
hostname = "freia027.hpc.l";
|
|
||||||
compression = true;
|
|
||||||
};
|
|
||||||
"heimdall" = {
|
|
||||||
user = "elitherl";
|
|
||||||
hostname = "heimdall003.jet.uk";
|
|
||||||
compression = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,170 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
enableTransience = true;
|
|
||||||
settings = {
|
|
||||||
add_newline = false;
|
|
||||||
aws.symbol = " ";
|
|
||||||
buf.symbol = " ";
|
|
||||||
c.symbol = " ";
|
|
||||||
character = {
|
|
||||||
success_symbol = "[>](bold green)";
|
|
||||||
error_symbol = "[>](bold red)";
|
|
||||||
};
|
|
||||||
command_timeout = 2000;
|
|
||||||
conda.symbol = " ";
|
|
||||||
container.symbol = " ";
|
|
||||||
crystal.symbol = " ";
|
|
||||||
dart.symbol = " ";
|
|
||||||
directory = {
|
|
||||||
read_only = " ";
|
|
||||||
truncation_length = 2;
|
|
||||||
fish_style_pwd_dir_length = 1;
|
|
||||||
truncate_to_repo = false;
|
|
||||||
};
|
|
||||||
direnv.disabled = false;
|
|
||||||
docker_context.symbol = " ";
|
|
||||||
elixir.symbol = " ";
|
|
||||||
elm.symbol = " ";
|
|
||||||
fennel.symbol = " ";
|
|
||||||
fossil_branch.symbol = " ";
|
|
||||||
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;
|
|
||||||
git_status = {
|
|
||||||
stashed = " ";
|
|
||||||
ahead = " ";
|
|
||||||
behind = " ";
|
|
||||||
up_to_date = "";
|
|
||||||
diverged = " ";
|
|
||||||
conflicted = " ";
|
|
||||||
deleted = " ";
|
|
||||||
renamed = " ";
|
|
||||||
modified = " ";
|
|
||||||
staged = " ";
|
|
||||||
untracked = " ";
|
|
||||||
typechanged = " ";
|
|
||||||
};
|
|
||||||
golang.symbol = " ";
|
|
||||||
guix_shell.symbol = " ";
|
|
||||||
haskell.symbol = " ";
|
|
||||||
haxe.symbol = " ";
|
|
||||||
hg_branch.symbol = " ";
|
|
||||||
hostname = {
|
|
||||||
ssh_only = false;
|
|
||||||
ssh_symbol = " ";
|
|
||||||
};
|
|
||||||
java.symbol = " ";
|
|
||||||
jobs.symbol = " ";
|
|
||||||
julia.symbol = " ";
|
|
||||||
kotlin.symbol = " ";
|
|
||||||
line_break.disabled = false;
|
|
||||||
localip.disabled = false;
|
|
||||||
lua.symbol = " ";
|
|
||||||
memory_usage = {
|
|
||||||
disabled = false;
|
|
||||||
symbol = " ";
|
|
||||||
};
|
|
||||||
meson.symbol = " ";
|
|
||||||
nim.symbol = " ";
|
|
||||||
nix_shell.symbol = " ";
|
|
||||||
nodejs.symbol = " ";
|
|
||||||
ocaml.symbol = " ";
|
|
||||||
os = {
|
|
||||||
disabled = false;
|
|
||||||
format = "on [$symbol]($style) ";
|
|
||||||
symbols = {
|
|
||||||
Alpaquita = " ";
|
|
||||||
Alpine = " ";
|
|
||||||
Amazon = " ";
|
|
||||||
Android = " ";
|
|
||||||
Arch = " ";
|
|
||||||
Artix = " ";
|
|
||||||
CentOS = " ";
|
|
||||||
Debian = " ";
|
|
||||||
DragonFly = " ";
|
|
||||||
Emscripten = " ";
|
|
||||||
EndeavourOS = " ";
|
|
||||||
Fedora = " ";
|
|
||||||
FreeBSD = " ";
|
|
||||||
Garuda = " ";
|
|
||||||
Gentoo = " ";
|
|
||||||
HardenedBSD = " ";
|
|
||||||
Illumos = " ";
|
|
||||||
Linux = " ";
|
|
||||||
Mabox = " ";
|
|
||||||
Macos = " ";
|
|
||||||
Manjaro = " ";
|
|
||||||
Mariner = " ";
|
|
||||||
MidnightBSD = " ";
|
|
||||||
Mint = " ";
|
|
||||||
NetBSD = " ";
|
|
||||||
NixOS = " ";
|
|
||||||
OpenBSD = " ";
|
|
||||||
openSUSE = " ";
|
|
||||||
OracleLinux = " ";
|
|
||||||
Pop = " ";
|
|
||||||
Raspbian = " ";
|
|
||||||
Redhat = " ";
|
|
||||||
RedHatEnterprise = " ";
|
|
||||||
Redox = " ";
|
|
||||||
Solus = " ";
|
|
||||||
SUSE = " ";
|
|
||||||
Ubuntu = " ";
|
|
||||||
Unknown = " ";
|
|
||||||
Windows = " ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
package.symbol = " ";
|
|
||||||
perl.symbol = " ";
|
|
||||||
php.symbol = " ";
|
|
||||||
pijul_channel.symbol = " ";
|
|
||||||
python = {
|
|
||||||
python_binary = "python3";
|
|
||||||
symbol = " ";
|
|
||||||
};
|
|
||||||
rlang.symbol = " ";
|
|
||||||
ruby.symbol = " ";
|
|
||||||
rust.symbol = " ";
|
|
||||||
scala.symbol = " ";
|
|
||||||
shell = {
|
|
||||||
disabled = false;
|
|
||||||
format = "using [$indicator]($style) ";
|
|
||||||
nu_indicator = "ν";
|
|
||||||
bash_indicator = "";
|
|
||||||
powershell_indicator = "";
|
|
||||||
cmd_indicator = "";
|
|
||||||
unknown_indicator = "";
|
|
||||||
};
|
|
||||||
status = {
|
|
||||||
disabled = false;
|
|
||||||
map_symbol = true;
|
|
||||||
pipestatus = true;
|
|
||||||
symbol = " ";
|
|
||||||
success_symbol = "";
|
|
||||||
not_executable_symbol = " ";
|
|
||||||
not_found_symbol = " ";
|
|
||||||
sigint_symbol = " ";
|
|
||||||
signal_symbol = " ";
|
|
||||||
};
|
|
||||||
sudo = {
|
|
||||||
disabled = false;
|
|
||||||
symbol = " ";
|
|
||||||
};
|
|
||||||
swift.symbol = " ";
|
|
||||||
zig.symbol = " ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,48 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
let
|
|
||||||
swwwMorning = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_morning.jpg}";
|
|
||||||
swwwDay = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_day.jpg}";
|
|
||||||
swwwEvening = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_evening.jpg}";
|
|
||||||
swwwNight = "${pkgs.swww}/bin/swww img ${../wallpapers/tropic_island_night.jpg}";
|
|
||||||
dynamicWallpaper = pkgs.writeShellScriptBin "dynamic-wallpaper" ''
|
|
||||||
swww query || exit 1 # Check SWWW daemon is actually running
|
|
||||||
case $(date +%H) in
|
|
||||||
06 | 07 | 08) # Morning
|
|
||||||
${swwwMorning}
|
|
||||||
;;
|
|
||||||
09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17) # Day
|
|
||||||
${swwwDay}
|
|
||||||
;;
|
|
||||||
18 | 19 | 20) # Evening
|
|
||||||
${swwwEvening}
|
|
||||||
;;
|
|
||||||
21 | 22 | 23 | 00 | 01 | 02 | 03 | 04 | 05) # Night
|
|
||||||
${swwwNight}
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
systemd.user = {
|
|
||||||
timers.dynamic-wallpaper = {
|
|
||||||
Install.WantedBy = [ "timers.target" ];
|
|
||||||
Timer = {
|
|
||||||
OnCalendar = "*:0";
|
|
||||||
Unit = "dynamic-wallpaper.service";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.dynamic-wallpaper = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Change wallpaper based on time of day";
|
|
||||||
Wants = [ "graphical-session.target" ];
|
|
||||||
After = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart = "${dynamicWallpaper}/bin/dynamic-wallpaper";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [ swww ];
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
window = {
|
|
||||||
dynamic_title = true;
|
|
||||||
padding = {
|
|
||||||
x = 5;
|
|
||||||
y = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
general.live_config_reload = true;
|
|
||||||
selection.save_to_clipboard = true;
|
|
||||||
mouse.hide_when_typing = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./alacritty.nix ];
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
(texlive.combine {
|
|
||||||
inherit (texlive)
|
|
||||||
scheme-medium
|
|
||||||
dvisvgm
|
|
||||||
dvipng
|
|
||||||
wrapfig
|
|
||||||
amsmath
|
|
||||||
ulem
|
|
||||||
hyperref
|
|
||||||
capt-of
|
|
||||||
listings
|
|
||||||
bera
|
|
||||||
;
|
|
||||||
latex-beamer-ukaea.pkgs = [ (callPackage ./latex-beamer-ukaea/default.nix { }) ];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
# UKAEA Beamer Style
|
|
||||||
|
|
||||||
This provides a Beamer theme for the default UKAEA branding. Subbrands
|
|
||||||
(CCFE, RACE, etc.) are not current available, but would not be
|
|
||||||
difficult to add.
|
|
||||||
|
|
||||||
For best results, it is recommended that you install the non-free
|
|
||||||
Latex fonts, as described here:
|
|
||||||
<https://www.tug.org/fonts/getnonfreefonts/>. However you will still
|
|
||||||
get perfectly acceptable results without them.
|
|
||||||
|
|
||||||
The file `ukaea-example.tex` is provided as a starting point for your
|
|
||||||
presentations. Simply rename and modify it as needed. You must either
|
|
||||||
keep your presentation TeX file in the same directory as the `.sty`
|
|
||||||
and image files or install those files on your system. If you wish to
|
|
||||||
do the latter, [follow these
|
|
||||||
instructions](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages#Installing_a_package)
|
|
||||||
starting from step 3.
|
|
|
@ -1,50 +0,0 @@
|
||||||
\usepackage{xcolor}
|
|
||||||
|
|
||||||
\mode<presentation>
|
|
||||||
|
|
||||||
\definecolor{UkaeaCoreBlue}{RGB}{0,48,86}
|
|
||||||
\definecolor{UkaeaCoreWhite}{RGB}{255,255,255}
|
|
||||||
\definecolor{UkaeaCoreBlack}{RGB}{0,0,0}
|
|
||||||
\definecolor{UkaeaCoreGrey1}{RGB}{88,89,91}
|
|
||||||
\definecolor{UkaeaCoreGrey2}{RGB}{128,130,133}
|
|
||||||
\definecolor{UkaeaCoreGrey3}{RGB}{167,169,172}
|
|
||||||
\definecolor{UkaeaCoreGrey4}{RGB}{209,211,212}
|
|
||||||
\definecolor{UkaeaSecondaryYellow}{RGB}{246,212,77}
|
|
||||||
\definecolor{UkaeaSecondaryGreen}{RGB}{0,111,69}
|
|
||||||
\definecolor{UkaeaSecondaryBlue}{RGB}{0,130,202}
|
|
||||||
\definecolor{UkaeaSecondaryRed}{RGB}{201,37,44}
|
|
||||||
\definecolor{UkaeaSecondaryText}{RGB}{144,145,179}
|
|
||||||
\definecolor{CcfeOrange}{RGB}{248,151,29}
|
|
||||||
\definecolor{OasRed}{RGB}{230,62,48}
|
|
||||||
\definecolor{RaceSilver}{RGB}{191,196,217}
|
|
||||||
\definecolor{MrcGreen}{RGB}{5,206,124}
|
|
||||||
|
|
||||||
\setbeamercolor{headline}{bg=UkaeaCoreBlue}
|
|
||||||
\setbeamercolor{title page}{bg=UkaeaCoreBlue}
|
|
||||||
|
|
||||||
\setbeamercolor{title}{fg=UkaeaCoreWhite, bg=UkaeaCoreBlue}
|
|
||||||
\setbeamercolor{subtitle}{fg=UkaeaCoreWhite}
|
|
||||||
|
|
||||||
\setbeamercolor{author}{fg=UkaeaSecondaryText}
|
|
||||||
\setbeamercolor{date}{fg=UkaeaSecondaryText}
|
|
||||||
\setbeamercolor{institute}{fg=UkaeaSecondaryText}
|
|
||||||
|
|
||||||
\setbeamercolor{normal text}{fg=UkaeaCoreBlue}
|
|
||||||
|
|
||||||
\setbeamercolor{structure}{fg=UkaeaCoreBlue}
|
|
||||||
\setbeamercolor{frametitle}{fg=UkaeaCoreBlue}
|
|
||||||
\setbeamercolor{framesubtitle}{fg=UkaeaCoreBlue}
|
|
||||||
\setbeamercolor{alerted text}{fg=UkaeaSecondaryRed}
|
|
||||||
|
|
||||||
\setbeamercolor{block title}{fg=UkaeaCoreWhite, bg=UkaeaCoreBlue}
|
|
||||||
\setbeamercolor{block body}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaCoreBlue!10}
|
|
||||||
|
|
||||||
\setbeamercolor{block title example}{fg=UkaeaCoreWhite, bg=UkaeaSecondaryBlue}
|
|
||||||
\setbeamercolor{block body example}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaSecondaryBlue!10}
|
|
||||||
|
|
||||||
\setbeamercolor{block title alert}{fg=UkaeaCoreWhite, bg=UkaeaSecondaryRed}
|
|
||||||
\setbeamercolor{block body alert}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaSecondaryRed!10}
|
|
||||||
|
|
||||||
\setbeamercolor{pagenumber}{fg=UkaeaCoreGrey3}
|
|
||||||
|
|
||||||
\mode<all>
|
|
|
@ -1,24 +0,0 @@
|
||||||
% to use non-standard font
|
|
||||||
\usepackage{iftex}
|
|
||||||
|
|
||||||
\usepackage[T1]{fontenc}
|
|
||||||
\IfFileExists{uarial.sty}{
|
|
||||||
\usepackage{newtxsf, uarial, textcomp}
|
|
||||||
\usepackage[italic]{mathastext}
|
|
||||||
}{
|
|
||||||
\usepackage[scaled]{helvet}
|
|
||||||
}
|
|
||||||
\renewcommand\familydefault{\sfdefault}
|
|
||||||
\usepackage[scaled]{beramono}
|
|
||||||
|
|
||||||
\setbeamerfont{title}{family=\fontfamily{ugq}, size=\LARGE}
|
|
||||||
\setbeamerfont{subtitle}{family=\sffamily, series=\mdseries, size=\large}
|
|
||||||
|
|
||||||
\setbeamerfont{institute}{family=\fontfamily{ugq}, size=\Large}
|
|
||||||
\setbeamerfont{author}{family=\sffamily, series=\bfseries, size=\footnotesize}
|
|
||||||
\setbeamerfont{date}{family=\sffamily, series=\bfseries, size=\footnotesize}
|
|
||||||
|
|
||||||
\setbeamerfont{frametitle}{family=\fontfamily{ugq}, size=\LARGE}
|
|
||||||
\setbeamerfont{framesubtitle}{family=\sffamily, series=\mdseries, size=\Large}
|
|
||||||
|
|
||||||
\setbeamerfont{normal text}{family=\sffamily, series=\mdseries, size=\Large}
|
|
|
@ -1,24 +0,0 @@
|
||||||
\mode<presentation>
|
|
||||||
|
|
||||||
\defbeamertemplate{itemize item}{circ}%
|
|
||||||
{\small\raise.2ex\hbox{$\bullet$}}
|
|
||||||
|
|
||||||
\defbeamertemplate{itemize subitem}{circ}%
|
|
||||||
{\small\raise.1ex\hbox{$\circ$}}
|
|
||||||
|
|
||||||
\defbeamertemplate{itemize subsubitem}{circ}%
|
|
||||||
{\scriptsize\raise.1ex\hbox{$\bullet$}}
|
|
||||||
|
|
||||||
\setbeamertemplate{items}[circ]
|
|
||||||
|
|
||||||
\setbeamertemplate{frametitle}
|
|
||||||
{
|
|
||||||
\nointerlineskip%
|
|
||||||
\vspace{4mm}\hspace{-8mm}
|
|
||||||
\begin{beamercolorbox}[wd=0.8\paperwidth]{frametitle}
|
|
||||||
\usebeamerfont{frametitle}{\insertframetitle}\par
|
|
||||||
\usebeamerfont{framesubtitle}{\usebeamercolor{framesubtitle}\insertframesubtitle}
|
|
||||||
\end{beamercolorbox}
|
|
||||||
}
|
|
||||||
|
|
||||||
\mode<all>
|
|
|
@ -1,96 +0,0 @@
|
||||||
\usepackage{tikz}
|
|
||||||
|
|
||||||
\mode<presentation>
|
|
||||||
|
|
||||||
\DeclareOptionBeamer{logo}{\def\beamer@ukaea@logo{#1}}
|
|
||||||
\ExecuteOptionsBeamer{logo=ukaea_logo.png}
|
|
||||||
\DeclareOptionBeamer{extratitletext}{\def\beamer@ukaea@extratitletext{#1}}
|
|
||||||
\ExecuteOptionsBeamer{extratitletext=}
|
|
||||||
\ProcessOptionsBeamer
|
|
||||||
|
|
||||||
\newcommand{\ukaeatriangle}[1] {
|
|
||||||
\begin{tikzpicture}
|
|
||||||
\useasboundingbox (0,0) rectangle(\the\paperwidth,0.2\paperwidth);
|
|
||||||
\node (t1) at (\paperwidth, 0.2\paperwidth) {};
|
|
||||||
\node (t2) at (0.8\paperwidth, 0.2\paperwidth) {};
|
|
||||||
\node (t3) at (\paperwidth, 0.) {};
|
|
||||||
\fill[fill=#1] (t1.center)--(t2.center)--(t3.center);
|
|
||||||
\if \beamer@ukaea@logo\@empty
|
|
||||||
\else
|
|
||||||
\node (logo) at (0.9415\paperwidth, 0.1415\paperwidth) {
|
|
||||||
\includegraphics[height=0.073\paperwidth]{\beamer@ukaea@logo}
|
|
||||||
};
|
|
||||||
\fi
|
|
||||||
\end{tikzpicture}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\setbeamertemplate{title page}
|
|
||||||
{%
|
|
||||||
\newdimen\title@graphic@height
|
|
||||||
\begin{minipage}[t]{\paperwidth}
|
|
||||||
\hspace*{-1cm}\inserttitlegraphic{}
|
|
||||||
\end{minipage}
|
|
||||||
|
|
||||||
\settoheight{\title@graphic@height}{\inserttitlegraphic{}}
|
|
||||||
\vspace*{-\title@graphic@height minus 0.004\paperheight}
|
|
||||||
\hspace*{-1cm}%
|
|
||||||
\begin{minipage}{\paperwidth}
|
|
||||||
\usebeamercolor[bg]{headline}
|
|
||||||
\ukaeatriangle{bg}\par
|
|
||||||
\end{minipage}
|
|
||||||
|
|
||||||
\vspace*{-2.59cm}
|
|
||||||
\hspace*{-1.085cm}
|
|
||||||
\begin{tikzpicture}
|
|
||||||
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
|
|
||||||
|
|
||||||
\node (q1) at (0,0.54\paperheight) {};
|
|
||||||
\node (q2) at (\the\paperwidth,0.32\paperheight) {};
|
|
||||||
\node (q3) at (0,0) {};
|
|
||||||
\node (q4) at (\the\paperwidth,0) {};
|
|
||||||
\fill[fill=bg] (q1.center)--(q2.center)--(q4.center)--(q3.center);
|
|
||||||
\node[anchor=north west,text width=0.8\paperwidth] (titletext) at (0.4,0.42\paperheight) {
|
|
||||||
\usebeamerfont{institute}{\usebeamercolor[fg]{institute}\insertinstitute}\par
|
|
||||||
\smallskip
|
|
||||||
\usebeamerfont{title}{\usebeamercolor[fg]{title}\inserttitle}\par
|
|
||||||
\usebeamerfont{subtitle}{\usebeamercolor[fg]{subtitle}\insertsubtitle}\par
|
|
||||||
|
|
||||||
\bigskip
|
|
||||||
% \begin{minipage}{0.6\textwidth}
|
|
||||||
\usebeamercolor[fg]{date}{\usebeamerfont{date}\insertdate}\par
|
|
||||||
\usebeamercolor[fg]{author}{\usebeamerfont{author}\insertauthor}\par
|
|
||||||
% \end{minipage}
|
|
||||||
};
|
|
||||||
\node[anchor=south east,text width=0.45\paperwidth] (extratext) at
|
|
||||||
(1.28\paperwidth, 0.15) {
|
|
||||||
\usebeamercolor[fg]{title}
|
|
||||||
\usebeamerfont{main text}
|
|
||||||
\beamer@ukaea@extratitletext
|
|
||||||
};
|
|
||||||
\end{tikzpicture}
|
|
||||||
\addtocounter{framenumber}{-1}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\setbeamertemplate{headline}
|
|
||||||
{%\vspace{-0.07cm}\hspace{0.795\paperwidth}
|
|
||||||
\ukaeatriangle{bg}
|
|
||||||
\vspace{-0.2\paperwidth}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
\setbeamertemplate{footline}
|
|
||||||
{
|
|
||||||
\leavevmode
|
|
||||||
\hbox{
|
|
||||||
\begin{beamercolorbox}[wd=1.0cm,ht=1.5cm,dp=0.3cm,right, rightskip=0.1cm]{pagenumber}%
|
|
||||||
\textbf{\large{\usebeamercolor[fg]{pagenumber}\insertframenumber{}}}
|
|
||||||
\end{beamercolorbox}
|
|
||||||
\usebeamercolor[fg]{normal text}{\textbf{\Large |} \raisebox{0.5ex}{\insertshorttitle}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
\mode<all>
|
|
||||||
\endinput
|
|
|
@ -1,24 +0,0 @@
|
||||||
\mode<presentation>
|
|
||||||
|
|
||||||
% Requirement
|
|
||||||
\RequirePackage{tikz}
|
|
||||||
\RequirePackage{xcolor}
|
|
||||||
|
|
||||||
% Options
|
|
||||||
\DeclareOptionBeamer{logo}{\PassOptionsToPackage{logo=#1}{beamerouterthemeukaea}}
|
|
||||||
\DeclareOptionBeamer{sponsors}{\PassOptionsToPackage{sponsors=#1}{beamerouterthemeukaea}}
|
|
||||||
\ProcessOptionsBeamer
|
|
||||||
|
|
||||||
% Settings
|
|
||||||
\useinnertheme{ukaea}
|
|
||||||
\useoutertheme{ukaea}
|
|
||||||
\usecolortheme{ukaea}
|
|
||||||
\usefonttheme{ukaea}
|
|
||||||
|
|
||||||
\setbeamertemplate{navigation symbols}{}
|
|
||||||
\setbeamertemplate{blocks}[default]
|
|
||||||
%\setbeamertemplate{blocks}[rounded][shadow=true]
|
|
||||||
|
|
||||||
\titlegraphic{\includegraphics[width=\paperwidth]{ukaea-jet.jpg}}
|
|
||||||
|
|
||||||
\mode<all>
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ stdenvNoCC }:
|
|
||||||
stdenvNoCC.mkDerivation {
|
|
||||||
pname = "latex-beamer-ukaea";
|
|
||||||
version = "0.1";
|
|
||||||
src = ./.;
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/tex/latex
|
|
||||||
cp -r $src/* $out/tex/latex
|
|
||||||
'';
|
|
||||||
tlType = "run";
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue