Compare commits
297 commits
backup_pre
...
main
9
Makefile
|
@ -1,6 +1,11 @@
|
||||||
.PHONY: build
|
.PHONY: default build flathub
|
||||||
|
|
||||||
HOST := $(shell hostname)
|
HOST := $(shell hostname)
|
||||||
|
|
||||||
|
default: build
|
||||||
|
|
||||||
build:
|
build:
|
||||||
nix build .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
nix build -j 1 --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
||||||
|
|
||||||
|
flathub:
|
||||||
|
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
|
|
60
README.org
|
@ -1,10 +1,62 @@
|
||||||
#+title: README
|
#+title: README
|
||||||
#+author: Evie Litherland-Smith
|
#+author: Evie Litherland-Smith
|
||||||
#+email: evie@xenia.me.uk
|
#+email: evie@xenia.me.uk
|
||||||
System configuration files for NixOS.
|
My personal NixOS + home-manager configuration files.
|
||||||
|
|
||||||
Fairly minimal setup and installation, to be paired with [[https://git.xenia.me.uk/pixelifytica/home-manager.git][a
|
To set up without cloning the repository (assuming an already running
|
||||||
home-manager config]] to get the full user setup.
|
NixOS system), run:
|
||||||
|
#+begin_src bash
|
||||||
|
sudo nixos-rebuild switch --flake "git+https://git.xenia.me.uk/pixelifytica/nixos.git?ref=main"\#$(hostname)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
Further reading:
|
* Password store setup
|
||||||
|
** 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/
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
{...}: {
|
|
||||||
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 +0,0 @@
|
||||||
{...}: {imports = [./laptop.nix];}
|
|
|
@ -1,19 +0,0 @@
|
||||||
{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];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{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;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
{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;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,135 +0,0 @@
|
||||||
{
|
|
||||||
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"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,58 +0,0 @@
|
||||||
{
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
285
flake.lock
|
@ -1,5 +1,210 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"base16": {
|
||||||
|
"inputs": {
|
||||||
|
"fromYaml": "fromYaml"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708890466,
|
||||||
|
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"rev": "665b3c6748534eb766c777298721cece9453fdae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"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-foot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696725948,
|
||||||
|
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-foot",
|
||||||
|
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-foot",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-helix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720809814,
|
||||||
|
"narHash": "sha256-numb3xigRGnr/deF7wdjBwVg7fpbTH7reFDkJ75AJkY=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"rev": "34f41987bec14c0f3f6b2155c19787b1f6489625",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-kitty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1665001328,
|
||||||
|
"narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=",
|
||||||
|
"owner": "kdrag0n",
|
||||||
|
"repo": "base16-kitty",
|
||||||
|
"rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "kdrag0n",
|
||||||
|
"repo": "base16-kitty",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-tmux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696725902,
|
||||||
|
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-tmux",
|
||||||
|
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-tmux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-vim": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1716150083,
|
||||||
|
"narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1673956053,
|
||||||
|
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": [
|
||||||
|
"stylix",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fromYaml": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689549921,
|
||||||
|
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gnome-shell": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1713702291,
|
||||||
|
"narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=",
|
||||||
|
"owner": "GNOME",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "GNOME",
|
||||||
|
"ref": "46.1",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720042825,
|
||||||
|
"narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "release-24.05",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"iosevka-custom": {
|
"iosevka-custom": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
|
@ -18,6 +223,26 @@
|
||||||
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
|
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nix-index-database": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725161148,
|
||||||
|
"narHash": "sha256-WfAHq3Ag3vLNFfWxKHjFBFdPI6JIideWFJod9mx1eoo=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"rev": "32058e9138248874773630c846563b1a78ee7a5b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717602782,
|
"lastModified": 1717602782,
|
||||||
|
@ -36,11 +261,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1719838683,
|
"lastModified": 1725407940,
|
||||||
"narHash": "sha256-Zw9rQjHz1ilNIimEXFeVa1ERNRBF8DoXDhLAZq5B4pE=",
|
"narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d032c1a6dfad4eedec7e35e91986becc699d7d69",
|
"rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -52,8 +277,60 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
"iosevka-custom": "iosevka-custom",
|
"iosevka-custom": "iosevka-custom",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nix-index-database": "nix-index-database",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"stylix": "stylix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stylix": {
|
||||||
|
"inputs": {
|
||||||
|
"base16": "base16",
|
||||||
|
"base16-fish": "base16-fish",
|
||||||
|
"base16-foot": "base16-foot",
|
||||||
|
"base16-helix": "base16-helix",
|
||||||
|
"base16-kitty": "base16-kitty",
|
||||||
|
"base16-tmux": "base16-tmux",
|
||||||
|
"base16-vim": "base16-vim",
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"gnome-shell": "gnome-shell",
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726497442,
|
||||||
|
"narHash": "sha256-fieyqmLEJQqqnuJcg2CAnQ8kHapXHhg9rL48NNWjnPw=",
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"rev": "149b313ddf91c3cc94309170498b162cec666675",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "danth",
|
||||||
|
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
175
flake.nix
|
@ -2,136 +2,77 @@
|
||||||
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.05";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager/release-24.05";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
stylix = {
|
||||||
|
url = "github:danth/stylix";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nix-index-database = {
|
||||||
|
url = "github:nix-community/nix-index-database";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
|
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs =
|
||||||
nixpkgs,
|
inputs@{ nixpkgs, ... }:
|
||||||
iosevka-custom,
|
{
|
||||||
...
|
nixosConfigurations = {
|
||||||
}: let
|
## Server
|
||||||
defaultSpecialArgs = {system ? "x86_64-linux", ...}: {
|
Legion = nixpkgs.lib.nixosSystem {
|
||||||
iosevkaCustom = {
|
specialArgs = {
|
||||||
packages = iosevka-custom.outputs.packages.${system};
|
inherit inputs;
|
||||||
names = iosevka-custom.outputs.names;
|
username = "pixelifytica";
|
||||||
};
|
hostName = "Legion";
|
||||||
};
|
|
||||||
defaultModules = {
|
|
||||||
hostName ? "Atlas",
|
|
||||||
userName ? "pixelifytica",
|
|
||||||
loginShell ? "zsh",
|
|
||||||
...
|
|
||||||
}: [
|
|
||||||
./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";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
modules = [ ./system/default.nix ];
|
||||||
};
|
};
|
||||||
programs.${loginShell}.enable = true;
|
## Personal
|
||||||
users.users.${userName} = {
|
Vanguard = nixpkgs.lib.nixosSystem {
|
||||||
shell = pkgs.${loginShell};
|
specialArgs = {
|
||||||
group = "users";
|
inherit inputs;
|
||||||
isNormalUser = true;
|
username = "pixelifytica";
|
||||||
description = "Evie Litherland-Smith";
|
hostName = "Vanguard";
|
||||||
extraGroups = ["networkmanager" "wheel" "video" "input" "uinput"];
|
};
|
||||||
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
|
modules = [ ./system/default.nix ];
|
||||||
openssh = {inherit (config.users.users.root.openssh) authorizedKeys;};
|
|
||||||
};
|
};
|
||||||
})
|
Northstar = nixpkgs.lib.nixosSystem {
|
||||||
];
|
specialArgs = {
|
||||||
in {
|
inherit inputs;
|
||||||
devShells.x86_64-linux.default = let
|
username = "pixelifytica";
|
||||||
pkgs = import nixpkgs {system = "x86_64-linux";};
|
hostName = "Northstar";
|
||||||
in
|
};
|
||||||
pkgs.mkShellNoCC {
|
modules = [ ./system/default.nix ];
|
||||||
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";
|
|
||||||
};
|
};
|
||||||
};
|
## Work
|
||||||
## Personal
|
Tone = nixpkgs.lib.nixosSystem {
|
||||||
Northstar = nixpkgs.lib.nixosSystem rec {
|
specialArgs = {
|
||||||
system = "x86_64-linux";
|
inherit inputs;
|
||||||
specialArgs = defaultSpecialArgs {inherit system;};
|
username = "elitherl";
|
||||||
modules = defaultModules {
|
hostName = "Tone";
|
||||||
hostName = "Northstar";
|
};
|
||||||
userName = "pixelifytica";
|
modules = [ ./system/default.nix ];
|
||||||
loginShell = "zsh";
|
|
||||||
};
|
};
|
||||||
};
|
Ronin = nixpkgs.lib.nixosSystem {
|
||||||
Vanguard = nixpkgs.lib.nixosSystem rec {
|
specialArgs = {
|
||||||
system = "x86_64-linux";
|
inherit inputs;
|
||||||
specialArgs = defaultSpecialArgs {inherit system;};
|
username = "elitherl";
|
||||||
modules = defaultModules {
|
hostName = "Ronin";
|
||||||
hostName = "Vanguard";
|
};
|
||||||
userName = "pixelifytica";
|
modules = [ ./system/default.nix ];
|
||||||
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";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
BIN
pfp/personal.png
Normal file
After Width: | Height: | Size: 178 KiB |
BIN
pfp/personal_micro.jpg
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
pfp/work.jpg
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
pfp/work_micro.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
|
@ -1,5 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
environment.systemPackages = with pkgs; [steamcmd];
|
|
||||||
networking.firewall.allowedTCPPorts = [8777];
|
|
||||||
services.caddy.virtualHosts."astro.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:8777";
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{...}: {
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
{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}";
|
|
||||||
}
|
|
20
system/Legion.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./services/caddy.nix
|
||||||
|
./services/forgejo.nix
|
||||||
|
./services/grafana.nix
|
||||||
|
./services/home-assistant.nix
|
||||||
|
./services/minecraft.nix
|
||||||
|
./services/nix-serve.nix
|
||||||
|
./services/satisfactory/default.nix
|
||||||
|
./services/sshd.nix
|
||||||
|
./services/syncthing.nix
|
||||||
|
];
|
||||||
|
boot.loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
users.mutableUsers = false;
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
}
|
31
system/Northstar.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ username, ... }:
|
||||||
|
{
|
||||||
|
imports = [ ./laptop.nix ];
|
||||||
|
home-manager.users.${username} = {
|
||||||
|
wayland.windowManager.sway.config = {
|
||||||
|
output."eDP-1".scale = "1.25";
|
||||||
|
workspaceOutputAssign = [
|
||||||
|
{
|
||||||
|
output = "eDP-1";
|
||||||
|
workspace = "1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.kanshi = {
|
||||||
|
enable = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "default";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
criteria = "eDP-1";
|
||||||
|
position = "0,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
107
system/Ronin.nix
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
{ pkgs, username, ... }:
|
||||||
|
{
|
||||||
|
imports = [ ./laptop.nix ];
|
||||||
|
home-manager.users.${username} = {
|
||||||
|
imports = [ ./home/work.nix ];
|
||||||
|
wayland.windowManager.sway.config = {
|
||||||
|
output = {
|
||||||
|
# Built-in
|
||||||
|
"eDP-1".scale = "1.25";
|
||||||
|
# Work
|
||||||
|
"Dell Inc. DELL P3223QE CCG8YN3".scale = "1.5";
|
||||||
|
# Home
|
||||||
|
"Acer Technologies ED270R TJMEE0043W01".mode = "1920x1080@120Hz";
|
||||||
|
"Microstep MSI G27CQ4 E2 Unknown" = {
|
||||||
|
mode = "2560x1440@120Hz";
|
||||||
|
scale = "1.25";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
workspaceOutputAssign = [
|
||||||
|
{
|
||||||
|
output = "eDP-1";
|
||||||
|
workspace = "1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.kanshi = {
|
||||||
|
enable = true;
|
||||||
|
settings =
|
||||||
|
let
|
||||||
|
laptopScreen.criteria = "eDP-1";
|
||||||
|
workMonitor.criteria = "Dell Inc. DELL P3223QE CCG8YN3";
|
||||||
|
homeMonitor1.criteria = "Acer Technologies ED270R TJMEE0043W01";
|
||||||
|
homeMonitor2.criteria = "Microstep MSI G27CQ4 E2 Unknown";
|
||||||
|
in
|
||||||
|
[
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "default";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
inherit (laptopScreen) criteria;
|
||||||
|
status = "enable";
|
||||||
|
position = "0,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "work";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
inherit (laptopScreen) criteria;
|
||||||
|
status = "disable";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
inherit (workMonitor) criteria;
|
||||||
|
status = "enable";
|
||||||
|
position = "0,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "home";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
inherit (laptopScreen) criteria;
|
||||||
|
status = "disable";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
inherit (homeMonitor1) criteria;
|
||||||
|
status = "enable";
|
||||||
|
position = "0,140";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
inherit (homeMonitor2) criteria;
|
||||||
|
status = "enable";
|
||||||
|
position = "1920,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
}
|
31
system/Tone.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ pkgs, username, ... }:
|
||||||
|
{
|
||||||
|
imports = [ ./desktop.nix ];
|
||||||
|
home-manager.users.${username} = {
|
||||||
|
imports = [ ./home/work.nix ];
|
||||||
|
wayland.windowManager.sway.config = {
|
||||||
|
output."Dell Inc. DELL P3223QE CCG8YN3".scale = "1.5";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
92
system/Vanguard.nix
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
username,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [ ./desktop.nix ];
|
||||||
|
home-manager.users.${username} = {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
krita
|
||||||
|
kdenlive
|
||||||
|
helvum
|
||||||
|
prusa-slicer
|
||||||
|
blender
|
||||||
|
freecad
|
||||||
|
openscad
|
||||||
|
kicad-small
|
||||||
|
mangohud
|
||||||
|
wineWowPackages.waylandFull
|
||||||
|
winetricks
|
||||||
|
lutris
|
||||||
|
cartridges
|
||||||
|
prismlauncher
|
||||||
|
(writeShellScriptBin "steamscope" ''
|
||||||
|
gamescope -w 2560 -h 1440 -r 120 --adaptive-sync --force-grab-cursor --fullscreen -e -- steam -gamepadui
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
programs.obs-studio = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
wlrobs
|
||||||
|
obs-vkcapture
|
||||||
|
obs-pipewire-audio-capture
|
||||||
|
input-overlay
|
||||||
|
];
|
||||||
|
};
|
||||||
|
wayland.windowManager.sway.config = {
|
||||||
|
output = {
|
||||||
|
"Acer Technologies ED270R TJMEE0043W01" = {
|
||||||
|
mode = "1920x1080@120Hz";
|
||||||
|
position = "0 140";
|
||||||
|
adaptive_sync = "off";
|
||||||
|
};
|
||||||
|
"Microstep MSI G27CQ4 E2 Unknown" = {
|
||||||
|
mode = "2560x1440@120Hz";
|
||||||
|
scale = "1.25";
|
||||||
|
position = "1920 0";
|
||||||
|
adaptive_sync = "on";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
workspaceOutputAssign = [
|
||||||
|
{
|
||||||
|
output = "DP-1";
|
||||||
|
workspace = "2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
output = "DP-2";
|
||||||
|
workspace = "1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
startup = [ { command = "${pkgs.xorg.xrandr}/bin/xrandr --output DP-1 --primary"; } ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
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;
|
||||||
|
opengl = {
|
||||||
|
enable = true;
|
||||||
|
driSupport = true;
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
|
steam-hardware.enable = true;
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
gamemode.enable = true;
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
gamescopeSession.enable = true;
|
||||||
|
};
|
||||||
|
gamescope = {
|
||||||
|
enable = true;
|
||||||
|
capSysNice = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
251
system/default.nix
Normal file
|
@ -0,0 +1,251 @@
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
channel.enable = true;
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
options = "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
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-original"
|
||||||
|
"steam-run"
|
||||||
|
"steamcmd"
|
||||||
|
];
|
||||||
|
overlays = [ (final: prev: { inherit (inputs.plasma-manager.packages.${prev.system}) rc2nix; }) ];
|
||||||
|
};
|
||||||
|
system = {
|
||||||
|
stateVersion = "23.05";
|
||||||
|
autoUpgrade = {
|
||||||
|
enable = true;
|
||||||
|
persistent = true;
|
||||||
|
allowReboot = false;
|
||||||
|
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
||||||
|
dates = "02:00";
|
||||||
|
randomizedDelaySec = "5min";
|
||||||
|
flags = [
|
||||||
|
"--accept-flake-config"
|
||||||
|
"--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;
|
||||||
|
networkmanager.enable = true;
|
||||||
|
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"
|
||||||
|
];
|
||||||
|
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
|
||||||
|
openssh = {
|
||||||
|
inherit authorizedKeys;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
backupFileExtension = "backup";
|
||||||
|
users.${username} = {
|
||||||
|
imports = [ ./home/default.nix ];
|
||||||
|
home = {
|
||||||
|
inherit username;
|
||||||
|
stateVersion = "23.05";
|
||||||
|
homeDirectory = "/home/${username}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
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
|
||||||
|
curl
|
||||||
|
wget
|
||||||
|
dig
|
||||||
|
wireguard-tools
|
||||||
|
quickemu
|
||||||
|
];
|
||||||
|
localBinInPath = true;
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
command-not-found.enable = false;
|
||||||
|
ssh.startAgent = true;
|
||||||
|
fish.enable = true;
|
||||||
|
nano = {
|
||||||
|
enable = true;
|
||||||
|
syntaxHighlight = true;
|
||||||
|
nanorc = ''
|
||||||
|
set nowrap
|
||||||
|
set tabstospaces
|
||||||
|
set tabsize 2
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
passSecretService.enable = true;
|
||||||
|
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.useXkbConfig = true;
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
image = ./home/wallpapers/landscapes/tropic_island_day.jpg;
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/one-light.yaml";
|
||||||
|
opacity.popups = 0.8;
|
||||||
|
cursor = {
|
||||||
|
package = pkgs.volantes-cursors;
|
||||||
|
name = "volantes_cursors";
|
||||||
|
size = 32;
|
||||||
|
};
|
||||||
|
fonts =
|
||||||
|
let
|
||||||
|
proportional = {
|
||||||
|
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-aile;
|
||||||
|
name = inputs.iosevka-custom.outputs.names.iosevka-custom-aile;
|
||||||
|
};
|
||||||
|
monospace = {
|
||||||
|
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-nerdfont;
|
||||||
|
name = inputs.iosevka-custom.outputs.names.iosevka-custom-nerdfont;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit monospace;
|
||||||
|
serif = proportional;
|
||||||
|
sansSerif = proportional;
|
||||||
|
sizes = {
|
||||||
|
applications = 12;
|
||||||
|
desktop = 14;
|
||||||
|
popups = 16;
|
||||||
|
terminal = 12;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
fonts = {
|
||||||
|
packages =
|
||||||
|
(with inputs.iosevka-custom.outputs.packages.${pkgs.system}; [
|
||||||
|
iosevka-custom-nerdfont
|
||||||
|
iosevka-custom-aile
|
||||||
|
])
|
||||||
|
++ (with pkgs; [
|
||||||
|
lmodern # LaTeX
|
||||||
|
noto-fonts-emoji # Emoji
|
||||||
|
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
||||||
|
]);
|
||||||
|
fontconfig = {
|
||||||
|
enable = true;
|
||||||
|
defaultFonts = with inputs.iosevka-custom.outputs.names; {
|
||||||
|
serif = [ iosevka-custom-aile ];
|
||||||
|
sansSerif = [ iosevka-custom-aile ];
|
||||||
|
monospace = [ iosevka-custom-nerdfont ];
|
||||||
|
emoji = [ "Noto Color Emoji" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
98
system/desktop.nix
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
{ pkgs, username, ... }:
|
||||||
|
{
|
||||||
|
home-manager.users.${username}.imports = [ ./home/desktop.nix ];
|
||||||
|
nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
environment = {
|
||||||
|
sessionVariables = {
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
QT_QPA_PLATFORM = "wayland";
|
||||||
|
GRIM_DEFAULT_DIR = "$HOME/Pictures/Screenshots";
|
||||||
|
};
|
||||||
|
systemPackages = with pkgs; [
|
||||||
|
libsecret
|
||||||
|
libnotify
|
||||||
|
xdg-utils
|
||||||
|
hunspell
|
||||||
|
hunspellDicts.en_GB-large
|
||||||
|
];
|
||||||
|
};
|
||||||
|
security = {
|
||||||
|
polkit.enable = true;
|
||||||
|
pam.loginLimits = [
|
||||||
|
{
|
||||||
|
domain = "@users";
|
||||||
|
item = "rtprio";
|
||||||
|
type = "-";
|
||||||
|
value = 1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
dconf.enable = true;
|
||||||
|
noisetorch.enable = true;
|
||||||
|
kdeconnect.enable = true;
|
||||||
|
file-roller.enable = true;
|
||||||
|
thunar = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.xfce; [
|
||||||
|
thunar-archive-plugin
|
||||||
|
thunar-volman
|
||||||
|
];
|
||||||
|
};
|
||||||
|
sway.enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
};
|
||||||
|
gtk.iconCache.enable = true;
|
||||||
|
services = {
|
||||||
|
dbus.packages = [ pkgs.gcr ];
|
||||||
|
flatpak.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
tumbler.enable = true;
|
||||||
|
udisks2.enable = true;
|
||||||
|
gvfs = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.gnome3.gvfs;
|
||||||
|
};
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
alsa = {
|
||||||
|
enable = true;
|
||||||
|
support32Bit = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings =
|
||||||
|
let
|
||||||
|
default_session.command = "sway";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit default_session;
|
||||||
|
initial_session = {
|
||||||
|
inherit (default_session) command;
|
||||||
|
user = username;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
xkb = {
|
||||||
|
layout = "gb";
|
||||||
|
variant = "";
|
||||||
|
options = "ctrl:nocaps";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
style = "adwaita";
|
||||||
|
platformTheme = "gnome";
|
||||||
|
};
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
config.common.default = "*"; # TODO change for xdg-desktop-portal > 1.17 changes
|
||||||
|
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,32 +1,44 @@
|
||||||
# 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 =
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"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 = [ "fmask=0022" "dmask=0022" ];
|
options = [
|
||||||
};
|
"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,34 +1,43 @@
|
||||||
# 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 =
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "rtsx_pci_sdmmc" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"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 = "/dev/disk/by-uuid/d1062931-ee58-4848-adf9-09452daeb6eb";
|
boot.initrd.luks.devices."luks-d1062931-ee58-4848-adf9-09452daeb6eb".device = "/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 = [ "fmask=0022" "dmask=0022" ];
|
options = [
|
||||||
};
|
"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,33 +1,44 @@
|
||||||
# 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 =
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"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 = "/dev/disk/by-uuid/bf1eab3a-6d92-430d-a282-8dd4c9efe2c7";
|
boot.initrd.luks.devices."luks-bf1eab3a-6d92-430d-a282-8dd4c9efe2c7".device = "/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 =
|
swapDevices = [ { device = "/dev/disk/by-uuid/e65e5e4d-2084-4e6b-9255-3b36cba1529f"; } ];
|
||||||
[ { 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,13 +1,24 @@
|
||||||
# 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" "usb_storage" "usbhid" "sd_mod" ];
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"usb_storage"
|
||||||
|
"usbhid"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
@ -17,16 +28,14 @@
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-08822b9c-e9d6-424c-bc75-373f8667526d".device =
|
boot.initrd.luks.devices."luks-08822b9c-e9d6-424c-bc75-373f8667526d".device = "/dev/disk/by-uuid/08822b9c-e9d6-424c-bc75-373f8667526d";
|
||||||
"/dev/disk/by-uuid/08822b9c-e9d6-424c-bc75-373f8667526d";
|
|
||||||
|
|
||||||
fileSystems."/boot/efi" = {
|
fileSystems."/boot/efi" = {
|
||||||
device = "/dev/disk/by-uuid/6009-89FC";
|
device = "/dev/disk/by-uuid/6009-89FC";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices =
|
swapDevices = [ { device = "/dev/disk/by-uuid/ff9627a7-820c-4628-a040-2b665688b893"; } ];
|
||||||
[{ 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
|
||||||
|
@ -37,6 +46,5 @@
|
||||||
|
|
||||||
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 =
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
}
|
|
@ -1,39 +1,51 @@
|
||||||
# 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 =
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" "sr_mod" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"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 = "/dev/disk/by-uuid/0d50df5f-9456-4296-9156-f5b818e11552";
|
boot.initrd.luks.devices."luks-0d50df5f-9456-4296-9156-f5b818e11552".device = "/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 = [ "fmask=0022" "dmask=0022" ];
|
options = [
|
||||||
};
|
"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
|
317
system/home/browser/bookmarks.json
Normal file
|
@ -0,0 +1,317 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "WhatsApp Web",
|
||||||
|
"url": "https://web.whatsapp.com/",
|
||||||
|
"tags": ["Social"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ABRP",
|
||||||
|
"url": "https://abetterrouteplanner.com/",
|
||||||
|
"tags": ["Travel"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Patreon",
|
||||||
|
"url": "https://www.patreon.com/home",
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Marval",
|
||||||
|
"url": "https://marval.service.ukaea.uk/MSMSelfService/Index.aspx",
|
||||||
|
"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/",
|
||||||
|
"tags": ["Work", "Room Booking"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "UKAEA Pinboard",
|
||||||
|
"url": "https://pinboard.ukaea.uk/",
|
||||||
|
"tags": ["Work"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "OPEN-ADAS",
|
||||||
|
"url": "https://open.adas.ac.uk/",
|
||||||
|
"tags": ["Work"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Homepage",
|
||||||
|
"url": "http://w3.jet.uk",
|
||||||
|
"tags": ["Work", "JET"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Physics Summary",
|
||||||
|
"url": "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php",
|
||||||
|
"tags": ["Work", "JET"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JSPO Reports",
|
||||||
|
"url": "https://www.jspo.jet.uk/pages/operations/jpecreports_2023.html",
|
||||||
|
"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": "Users Page",
|
||||||
|
"url": "https://users.mastu.ukaea.uk/home",
|
||||||
|
"tags": ["Work", "MAST-U"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Diagnostic Handbook",
|
||||||
|
"url": "https://intranet.ccfe.ac.uk/mastu-handbook",
|
||||||
|
"tags": ["Work", "MAST-U"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "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": "Teams",
|
||||||
|
"url": "https://teams.microsoft.com/v2",
|
||||||
|
"tags": ["Work", "Office"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "OneDrive",
|
||||||
|
"url": "https://ukaeauk-my.sharepoint.com/personal/evie_litherland-smith_ukaea_uk/",
|
||||||
|
"tags": ["Work", "Office"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "PSFO Sharepoint",
|
||||||
|
"url": "https://ukaeauk.sharepoint.com/sites/Plasma",
|
||||||
|
"tags": ["Work", "Office"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Culham Canteen Menus",
|
||||||
|
"url": "https://nucleus.ukaea.uk/Interact/Pages/Section/Default.aspx?section=10112",
|
||||||
|
"tags": ["Work", "Canteen", "Menu"]
|
||||||
|
}
|
||||||
|
]
|
67
system/home/browser/config.lisp
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
(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")
|
7
system/home/browser/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./firefox.nix
|
||||||
|
./nyxt.nix
|
||||||
|
];
|
||||||
|
}
|
216
system/home/browser/firefox.nix
Normal file
|
@ -0,0 +1,216 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
stylix.targets.firefox.profileNames = [ "default" ];
|
||||||
|
programs = {
|
||||||
|
browserpass = {
|
||||||
|
enable = true;
|
||||||
|
browsers = [ "firefox" ];
|
||||||
|
};
|
||||||
|
firefox = {
|
||||||
|
enable = true;
|
||||||
|
policies = {
|
||||||
|
BlockAboutProfiles = true;
|
||||||
|
Cookies = {
|
||||||
|
Behavior = "reject-tracker-and-partition-foreign";
|
||||||
|
BehaviorPrivateBrowsing = "reject";
|
||||||
|
Locked = true;
|
||||||
|
};
|
||||||
|
DefaultDownloadDirectory = "\${home}/Downloads";
|
||||||
|
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 = {
|
||||||
|
Value = true;
|
||||||
|
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.default = {
|
||||||
|
bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json);
|
||||||
|
settings = {
|
||||||
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
"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.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";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
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" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
10
system/home/browser/librewolf.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
browserpass.browsers = [ "librewolf" ];
|
||||||
|
librewolf = {
|
||||||
|
enable = true;
|
||||||
|
settings = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
67
system/home/browser/nyxt.nix
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.nyxt ];
|
||||||
|
xdg = {
|
||||||
|
configFile = {
|
||||||
|
"nyxt/config.lisp".text =
|
||||||
|
let
|
||||||
|
fonts = config.stylix.fonts;
|
||||||
|
scheme = config.lib.stylix.scheme;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
;; Import custom configuration
|
||||||
|
(nyxt::load-lisp "${./config.lisp}")
|
||||||
|
;; Define custom theme
|
||||||
|
(define-configuration browser
|
||||||
|
((theme (make-instance 'theme:theme
|
||||||
|
:dark-p t
|
||||||
|
:font-family "${fonts.sansSerif.name}"
|
||||||
|
:monospace-font-family "${fonts.monospace.name}"
|
||||||
|
:background-color "${scheme.withHashtag.base00}"
|
||||||
|
:on-background-color "${scheme.withHashtag.base05}"
|
||||||
|
:primary-color "${scheme.withHashtag.base02}"
|
||||||
|
:on-primary-color "${scheme.withHashtag.base05}"
|
||||||
|
:secondary-color "${scheme.withHashtag.base03}"
|
||||||
|
:on-secondary-color "${scheme.withHashtag.base05}"
|
||||||
|
:accent-color "${scheme.withHashtag.base0D}"
|
||||||
|
:on-accent-color "${scheme.withHashtag.base01}"
|
||||||
|
:action-color "${scheme.withHashtag.cyan}"
|
||||||
|
:on-action-color "${scheme.withHashtag.base01}"
|
||||||
|
:success-color "${scheme.withHashtag.green}"
|
||||||
|
:on-success-color "${scheme.withHashtag.base01}"
|
||||||
|
:highlight-color "${scheme.withHashtag.magenta}"
|
||||||
|
:on-highlight-color "${scheme.withHashtag.base01}"
|
||||||
|
:warning-color "${scheme.withHashtag.yellow}"
|
||||||
|
:on-warning-color "${scheme.withHashtag.base01}"
|
||||||
|
:codeblock-color "${scheme.withHashtag.base02}"
|
||||||
|
:on-codeblock-color "${scheme.withHashtag.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)
|
||||||
|
))
|
||||||
|
+ ")"
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
10
system/home/default.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{ inputs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
|
./shell/default.nix
|
||||||
|
./services/password-store/default.nix
|
||||||
|
./scripts/default.nix
|
||||||
|
];
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
}
|
71
system/home/desktop.nix
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./sway/default.nix
|
||||||
|
./emacs/default.nix
|
||||||
|
./browser/default.nix
|
||||||
|
./zathura/default.nix
|
||||||
|
./services/email/default.nix
|
||||||
|
];
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
libreoffice-fresh
|
||||||
|
webcord
|
||||||
|
signal-desktop
|
||||||
|
teams-for-linux
|
||||||
|
];
|
||||||
|
services.syncthing.enable = true;
|
||||||
|
programs = {
|
||||||
|
mpv.enable = true;
|
||||||
|
alacritty = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
shell = "${config.programs.fish.package}/bin/fish";
|
||||||
|
window = {
|
||||||
|
dynamic_title = true;
|
||||||
|
padding = {
|
||||||
|
x = 5;
|
||||||
|
y = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
live_config_reload = true;
|
||||||
|
selection.save_to_clipboard = true;
|
||||||
|
mouse.hide_when_typing = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xdg = {
|
||||||
|
mime.enable = true;
|
||||||
|
mimeApps =
|
||||||
|
let
|
||||||
|
defaultApplications = import ./mimeapps/default.nix;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
inherit defaultApplications;
|
||||||
|
associations = {
|
||||||
|
added = defaultApplications;
|
||||||
|
removed = {
|
||||||
|
"x-scheme-handler/zoomus" = config.xdg.mimeApps.defaultApplications."x-scheme-handler/http";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
extraConfig = {
|
||||||
|
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
configFile = {
|
||||||
|
"autostart/signal-desktop.desktop".source = "${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
||||||
|
"teams-for-linux/config.json".text = builtins.toJSON {
|
||||||
|
awayOnSystemIdle = true;
|
||||||
|
closeAppOnCross = true;
|
||||||
|
followSystemTheme = true;
|
||||||
|
notificationMethod = "electron";
|
||||||
|
optInTeamsV2 = true;
|
||||||
|
spellCheckerLanguages = [ "en_GB" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
134
system/home/emacs/default.nix
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [ ../shell/default.nix ];
|
||||||
|
stylix.targets.emacs.enable = false;
|
||||||
|
services.emacs = {
|
||||||
|
enable = true;
|
||||||
|
package = config.programs.emacs.finalPackage;
|
||||||
|
defaultEditor = true;
|
||||||
|
client.enable = true;
|
||||||
|
socketActivation.enable = true;
|
||||||
|
startWithUserSession = false;
|
||||||
|
};
|
||||||
|
programs.emacs = {
|
||||||
|
# Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git
|
||||||
|
# git clone https://git.xenia.me.uk/pixelifytica/emacs.git ~/.emacs.d
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.emacs29-pgtk;
|
||||||
|
extraConfig =
|
||||||
|
let
|
||||||
|
fixed-font-family = "${config.stylix.fonts.monospace.name}";
|
||||||
|
variable-font-family = "${config.stylix.fonts.sansSerif.name}";
|
||||||
|
font-height = builtins.toString (
|
||||||
|
builtins.floor (builtins.mul config.stylix.fonts.sizes.applications 10)
|
||||||
|
);
|
||||||
|
custom-theme-name = "nix";
|
||||||
|
custom-theme = pkgs.writeTextFile {
|
||||||
|
name = "custom-emacs-theme";
|
||||||
|
destination = "/${custom-theme-name}-theme.el";
|
||||||
|
text = ''
|
||||||
|
(deftheme ${custom-theme-name}
|
||||||
|
"Use Nix customised fonts for main faces")
|
||||||
|
|
||||||
|
(custom-theme-set-variables
|
||||||
|
'${custom-theme-name}
|
||||||
|
'(menu-bar-mode nil))
|
||||||
|
|
||||||
|
(custom-theme-set-faces
|
||||||
|
'${custom-theme-name}
|
||||||
|
'(default ((t (:family "${fixed-font-family}" :height ${font-height}))))
|
||||||
|
'(fixed-pitch ((t (:family "${fixed-font-family}"))))
|
||||||
|
'(fixed-pitch-serif ((t (:family "${fixed-font-family}"))))
|
||||||
|
'(variable-pitch ((t (:family "${variable-font-family}")))))
|
||||||
|
|
||||||
|
(provide-theme '${custom-theme-name})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
custom-theme-hash = builtins.hashFile "sha256" "${custom-theme}/${custom-theme-name}-theme.el";
|
||||||
|
in
|
||||||
|
''
|
||||||
|
(add-to-list 'custom-theme-load-path "${custom-theme}")
|
||||||
|
(add-to-list 'custom-safe-themes "${custom-theme-hash}")
|
||||||
|
(load-theme '${custom-theme-name})
|
||||||
|
'';
|
||||||
|
extraPackages =
|
||||||
|
epkgs: with epkgs; [
|
||||||
|
treesit-grammars.with-all-grammars
|
||||||
|
mu4e
|
||||||
|
emacsql-sqlite
|
||||||
|
];
|
||||||
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# Emacs requirements
|
||||||
|
imagemagick
|
||||||
|
languagetool
|
||||||
|
wordnet
|
||||||
|
|
||||||
|
# Plugin requirements
|
||||||
|
gcc
|
||||||
|
sqlite
|
||||||
|
pandoc
|
||||||
|
ghostscript
|
||||||
|
poppler_utils
|
||||||
|
graphviz
|
||||||
|
mp3info
|
||||||
|
|
||||||
|
# Customised LaTeX install
|
||||||
|
(texlive.combine {
|
||||||
|
inherit (texlive)
|
||||||
|
scheme-medium
|
||||||
|
dvisvgm
|
||||||
|
dvipng
|
||||||
|
wrapfig
|
||||||
|
amsmath
|
||||||
|
ulem
|
||||||
|
hyperref
|
||||||
|
capt-of
|
||||||
|
listings
|
||||||
|
;
|
||||||
|
})
|
||||||
|
|
||||||
|
# Development tools
|
||||||
|
## Code screenshots
|
||||||
|
silicon
|
||||||
|
|
||||||
|
## Python Environments
|
||||||
|
uv
|
||||||
|
poetry
|
||||||
|
|
||||||
|
## Linters
|
||||||
|
shellcheck
|
||||||
|
yamllint
|
||||||
|
ruff
|
||||||
|
nodePackages.eslint
|
||||||
|
|
||||||
|
## Formatters
|
||||||
|
nixfmt-rfc-style
|
||||||
|
shfmt
|
||||||
|
stylua
|
||||||
|
nodePackages.prettier
|
||||||
|
|
||||||
|
## Language servers
|
||||||
|
nixd
|
||||||
|
lua-language-server
|
||||||
|
nodePackages.typescript-language-server
|
||||||
|
|
||||||
|
## Interpreters
|
||||||
|
(python3.withPackages (
|
||||||
|
ps: with ps; [
|
||||||
|
tkinter
|
||||||
|
python-lsp-server
|
||||||
|
mypy
|
||||||
|
numpy
|
||||||
|
scipy
|
||||||
|
xarray
|
||||||
|
matplotlib
|
||||||
|
]
|
||||||
|
))
|
||||||
|
(luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]))
|
||||||
|
];
|
||||||
|
xdg.configFile = {
|
||||||
|
"ruff/pyproject.toml".source = ./ruff.toml;
|
||||||
|
"pypoetry/config.toml".source = ./pypoetry.toml;
|
||||||
|
};
|
||||||
|
}
|
60
system/home/emacs/emacs-packages.nix
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
epkgs: with epkgs; [
|
||||||
|
# UI
|
||||||
|
base16-theme
|
||||||
|
all-the-icons
|
||||||
|
nerd-icons
|
||||||
|
nerd-icons-completion
|
||||||
|
nerd-icons-corfu
|
||||||
|
nerd-icons-dired
|
||||||
|
nerd-icons-ibuffer
|
||||||
|
minions
|
||||||
|
ligature
|
||||||
|
which-key
|
||||||
|
diff-hl
|
||||||
|
|
||||||
|
# Completion
|
||||||
|
vertico
|
||||||
|
orderless
|
||||||
|
marginalia
|
||||||
|
cape
|
||||||
|
corfu
|
||||||
|
corfu-terminal
|
||||||
|
consult
|
||||||
|
consult-eglot
|
||||||
|
flyspell-correct
|
||||||
|
tempel
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
treesit-auto
|
||||||
|
magit
|
||||||
|
forge
|
||||||
|
apheleia
|
||||||
|
envrc
|
||||||
|
rainbow-delimiters
|
||||||
|
flymake-shellcheck
|
||||||
|
flymake-yamllint
|
||||||
|
flymake-clippy
|
||||||
|
flymake-eslint
|
||||||
|
markdown-mode
|
||||||
|
pandoc-mode
|
||||||
|
python-docstring
|
||||||
|
nix-mode
|
||||||
|
lua-mode
|
||||||
|
|
||||||
|
# Org + LaTeX
|
||||||
|
org-roam
|
||||||
|
org-noter
|
||||||
|
citar
|
||||||
|
auctex
|
||||||
|
htmlize
|
||||||
|
|
||||||
|
# Other
|
||||||
|
password-store
|
||||||
|
emms
|
||||||
|
bbdb
|
||||||
|
ement
|
||||||
|
elfeed
|
||||||
|
elfeed-org
|
||||||
|
elfeed-tube
|
||||||
|
scad-mode
|
||||||
|
]
|
53
system/home/emacs/luarocks/graph-toolkit.nix
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
}
|
38
system/home/emacs/luarocks/scilua.nix
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
}
|
29
system/home/emacs/luarocks/xsys.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
}
|
9
system/home/emacs/pypoetry.toml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[virtualenvs]
|
||||||
|
create = true
|
||||||
|
in-project = true
|
||||||
|
|
||||||
|
[virtualenvs.options]
|
||||||
|
always-copy = true
|
||||||
|
no-pip = true
|
||||||
|
no-setuptools = true
|
||||||
|
system-site-packages = true
|
38
system/home/emacs/ruff.toml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
[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
|
BIN
system/home/icons/nix/nix-owo-transparent.png
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
system/home/icons/nix/nix-owo-white.png
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
system/home/icons/nix/nix-shooting.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
system/home/icons/nix/nix-snowflake-cute.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
system/home/icons/nix/nixos-confetti.png
Normal file
After Width: | Height: | Size: 89 KiB |
13
system/home/lib/to_capital.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
lib: string:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
chars =
|
||||||
|
let
|
||||||
|
lc = strings.splitString "" string;
|
||||||
|
in
|
||||||
|
(lists.sublist 1 (lists.length lc - 2) lc);
|
||||||
|
in
|
||||||
|
(strings.concatStringsSep "" (
|
||||||
|
(lists.singleton (strings.toUpper (lists.elemAt chars 0)))
|
||||||
|
++ (lists.sublist 1 (lists.length chars) chars)
|
||||||
|
))
|
78
system/home/mimeapps/default.nix
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
let
|
||||||
|
emacs = [ "emacsclient.desktop" ];
|
||||||
|
browser = [ "firefox.desktop" ];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"inode/directory" = [ "thunar.desktop" ];
|
||||||
|
"inode/symlink" = [ "thunar.desktop" ];
|
||||||
|
|
||||||
|
"image/jpeg" = [ "swayimg.desktop" ];
|
||||||
|
"image/png" = [ "swayimg.desktop" ];
|
||||||
|
"video/mp4" = [ "mpv.desktop" ];
|
||||||
|
|
||||||
|
"text/plain" = emacs;
|
||||||
|
"text/richtext" = emacs;
|
||||||
|
"text/org" = emacs;
|
||||||
|
"text/markdown" = emacs;
|
||||||
|
"text/rust" = emacs;
|
||||||
|
"text/csv" = emacs;
|
||||||
|
"text/html" = emacs;
|
||||||
|
"text/css" = emacs;
|
||||||
|
"text/tab-separated-values" = emacs;
|
||||||
|
|
||||||
|
"text/x-emacs-lisp" = emacs;
|
||||||
|
"text/x-fortran" = emacs;
|
||||||
|
"text/x-idl" = emacs;
|
||||||
|
"text/x-log" = emacs;
|
||||||
|
"text/x-lua" = emacs;
|
||||||
|
"text/x-makefile" = emacs;
|
||||||
|
"text/x-cmake" = emacs;
|
||||||
|
"text/x-python" = emacs;
|
||||||
|
"text/x-python3" = emacs;
|
||||||
|
"text/x-readme" = emacs;
|
||||||
|
"text/x-scheme" = emacs;
|
||||||
|
"text/x-tex" = emacs;
|
||||||
|
"text/x-texinfo" = emacs;
|
||||||
|
|
||||||
|
"application/json" = emacs;
|
||||||
|
"application/toml" = emacs;
|
||||||
|
"application/yaml" = emacs;
|
||||||
|
"application/xml" = emacs;
|
||||||
|
"application/rss+xml" = emacs;
|
||||||
|
"application/xhtml+xml" = emacs;
|
||||||
|
"application/oxps" = emacs;
|
||||||
|
"application/x-shellscript" = emacs;
|
||||||
|
"application/x-docbook+xml" = emacs;
|
||||||
|
"application/x-yaml" = emacs;
|
||||||
|
|
||||||
|
"application/pdf" = [ "org.pwmt.zathura.desktop" ];
|
||||||
|
"application/epub+zip" = [ "org.pwmt.zathura.desktop" ];
|
||||||
|
"application/msword" = [ "writer.desktop" ];
|
||||||
|
"application/zip" = [ "xarchiver.desktop" ];
|
||||||
|
|
||||||
|
"application/x-extension-htm" = browser;
|
||||||
|
"application/x-extension-html" = browser;
|
||||||
|
"application/x-extension-shtml" = browser;
|
||||||
|
"application/x-extension-xhtml" = browser;
|
||||||
|
"application/x-extension-xht" = browser;
|
||||||
|
"application/x-mozilla-bookmarks" = browser;
|
||||||
|
"application/x-zoom" = [ "Zoom.desktop" ] ++ browser;
|
||||||
|
|
||||||
|
"x-scheme-handler/http" = browser;
|
||||||
|
"x-scheme-handler/https" = browser;
|
||||||
|
"x-scheme-handler/about" = browser;
|
||||||
|
"x-scheme-handler/chrome" = browser;
|
||||||
|
"x-scheme-handler/webcal" = browser;
|
||||||
|
"x-scheme-handler/geo" = [ "openstreetmap-geo-handler.desktop" ];
|
||||||
|
"x-scheme-handler/mailto" = [ "emacsclient-mail.desktop" ];
|
||||||
|
"x-scheme-handler/unknown" = emacs;
|
||||||
|
|
||||||
|
"x-scheme-handler/prusaslicer" = [ "PrusaSlicerURLProtocol.desktop" ];
|
||||||
|
|
||||||
|
"x-scheme-handler/ms-word" = [ "writer.desktop" ];
|
||||||
|
"x-scheme-handler/ms-powerpoint" = [ "impress.desktop" ];
|
||||||
|
"x-scheme-handler/ms-excel" = [ "calc.desktop" ];
|
||||||
|
"x-scheme-handler/msteams" = [ "teams-for-linux.desktop" ] ++ browser;
|
||||||
|
"x-scheme-handler/zoomus" = browser;
|
||||||
|
"x-scheme-handler/zoommtg" = browser;
|
||||||
|
}
|
5
system/home/openfortivpn/jetdata-vpn.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
host = vpn.jetdata.eu
|
||||||
|
port = 943
|
||||||
|
username = elitherl
|
||||||
|
set-dns = 0
|
||||||
|
set-routes = 0
|
5
system/home/openfortivpn/ukaea-vpn.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
host = vpn.ukaea.uk
|
||||||
|
port = 943
|
||||||
|
username = elitherl
|
||||||
|
set-dns = 1
|
||||||
|
set-routes = 1
|
11
system/home/openfortivpn/ukaea.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellScriptBin "ukaea-vpn-connect" ''
|
||||||
|
sudo ${pkgs.openfortivpn}/bin/openfortivpn -c ${./ukaea-vpn.conf} -p $(${pkgs.pass}/bin/pass show work/microsoftonline.com | head -n1)
|
||||||
|
'')
|
||||||
|
(pkgs.writeShellScriptBin "jetdata-vpn-connect" ''
|
||||||
|
sudo ${pkgs.openfortivpn}/bin/openfortivpn -c ${./jetdata-vpn.conf} -p $(${pkgs.pass}/bin/pass show work/microsoftonline.com | head -n1)
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
}
|
372
system/home/plasma/default.nix
Normal file
|
@ -0,0 +1,372 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [ ./konsole.nix ];
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
rc2nix
|
||||||
|
wl-clipboard
|
||||||
|
(papirus-icon-theme.override { color = "violet"; })
|
||||||
|
];
|
||||||
|
services.gpg-agent.pinentryPackage = pkgs.pinentry-qt;
|
||||||
|
programs.plasma = {
|
||||||
|
enable = true;
|
||||||
|
overrideConfig = true;
|
||||||
|
|
||||||
|
workspace =
|
||||||
|
let
|
||||||
|
toCapital = import ../lib/to_capital.nix lib;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
clickItemTo = "open";
|
||||||
|
theme = "default";
|
||||||
|
colorScheme = "Breeze${toCapital config.lib.stylix.scheme.variant}";
|
||||||
|
iconTheme = "Papirus-${toCapital config.lib.stylix.scheme.variant}";
|
||||||
|
windowDecorations = {
|
||||||
|
library = "org.kde.breeze";
|
||||||
|
theme = "Breeze";
|
||||||
|
};
|
||||||
|
cursor = {
|
||||||
|
inherit (config.home.pointerCursor) size;
|
||||||
|
theme = config.home.pointerCursor.name;
|
||||||
|
};
|
||||||
|
wallpaper = "${../wallpapers/landscapes/tropic_island_day.jpg}";
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts =
|
||||||
|
let
|
||||||
|
general = {
|
||||||
|
family = config.stylix.fonts.sansSerif.name;
|
||||||
|
pointSize = 12;
|
||||||
|
};
|
||||||
|
small = {
|
||||||
|
inherit (general) family;
|
||||||
|
pointSize = general.pointSize - 2;
|
||||||
|
};
|
||||||
|
fixedWidth = {
|
||||||
|
family = config.stylix.fonts.monospace.name;
|
||||||
|
pointSize = 12;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit general small fixedWidth;
|
||||||
|
menu = general;
|
||||||
|
toolbar = general;
|
||||||
|
windowTitle = small;
|
||||||
|
};
|
||||||
|
|
||||||
|
hotkeys.commands = {
|
||||||
|
"launch-emacs" = {
|
||||||
|
name = "Launch Emacs Client Window";
|
||||||
|
key = "Meta+Alt+X";
|
||||||
|
command = "emacsclient -c";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
panels = [
|
||||||
|
{
|
||||||
|
height = 32;
|
||||||
|
lengthMode = "fill";
|
||||||
|
location = "bottom";
|
||||||
|
alignment = "center";
|
||||||
|
hiding = "normalpanel";
|
||||||
|
floating = true;
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
name = "org.kde.plasma.kicker";
|
||||||
|
config.General = {
|
||||||
|
icon = "nix-snowflake";
|
||||||
|
appNameFormat = 0;
|
||||||
|
limitDepth = true;
|
||||||
|
alphaSort = true;
|
||||||
|
recentOrdering = 0;
|
||||||
|
showRecentApps = true;
|
||||||
|
showRecentDocs = true;
|
||||||
|
showIconsRootLevel = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
"org.kde.plasma.marginsseparator"
|
||||||
|
{
|
||||||
|
name = "org.kde.plasma.icontasks";
|
||||||
|
config.General = {
|
||||||
|
maxStripes = "1";
|
||||||
|
showToolTips = "true";
|
||||||
|
launchers = [
|
||||||
|
"preferred://filemanager"
|
||||||
|
"applications:emacs.desktop"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
"org.kde.plasma.panelspacer"
|
||||||
|
{
|
||||||
|
name = "org.kde.plasma.pager";
|
||||||
|
config.General = {
|
||||||
|
showWindowIcons = "true";
|
||||||
|
showOnlyCurrentScreen = "false";
|
||||||
|
wrapPage = "true";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
"org.kde.plasma.panelspacer"
|
||||||
|
"org.kde.plasma.marginsseparator"
|
||||||
|
"org.kde.plasma.keyboardindicator"
|
||||||
|
"org.kde.plasma.cameraindicator"
|
||||||
|
{
|
||||||
|
systemTray = {
|
||||||
|
icons = {
|
||||||
|
spacing = "small";
|
||||||
|
scaleToFit = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
digitalClock = {
|
||||||
|
date = {
|
||||||
|
enable = true;
|
||||||
|
format = "isoDate";
|
||||||
|
position = "besideTime";
|
||||||
|
};
|
||||||
|
time = {
|
||||||
|
format = "24h";
|
||||||
|
showSeconds = "onlyInTooltip";
|
||||||
|
};
|
||||||
|
calendar.showWeekNumbers = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "org.kde.plasma.userswitcher";
|
||||||
|
config.General = {
|
||||||
|
showFace = "true";
|
||||||
|
showName = "false";
|
||||||
|
showFullName = "true";
|
||||||
|
showTechnicalInfo = "true";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
shortcuts = {
|
||||||
|
ksmserver = {
|
||||||
|
"Lock Session" = [
|
||||||
|
"Screensaver"
|
||||||
|
"Meta+Alt+L"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
kwin = {
|
||||||
|
"Walk Through Windows of Current Application" = "Alt+`";
|
||||||
|
"Walk Through Windows of Current Application (Reverse)" = "Alt+¬";
|
||||||
|
"ToggleMouseClick" = "Meta+*";
|
||||||
|
"Expose" = "Meta+,";
|
||||||
|
"Switch Window Down" = "Meta+J";
|
||||||
|
"Switch Window Left" = "Meta+H";
|
||||||
|
"Switch Window Right" = "Meta+L";
|
||||||
|
"Switch Window Up" = "Meta+K";
|
||||||
|
"Invert" = "Meta+Ctrl+I";
|
||||||
|
"InvertWindow" = "Meta+Ctrl+U";
|
||||||
|
"Invert Screen Colors" = [ ];
|
||||||
|
};
|
||||||
|
"services/org.kde.krunner.desktop"."_launch" = [
|
||||||
|
"Meta+Space"
|
||||||
|
"Search"
|
||||||
|
"Alt+F2"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
kwin = {
|
||||||
|
virtualDesktops = {
|
||||||
|
rows = 1;
|
||||||
|
number = 4;
|
||||||
|
};
|
||||||
|
effects = {
|
||||||
|
translucency.enable = true;
|
||||||
|
blur.enable = true;
|
||||||
|
cube.enable = true;
|
||||||
|
dimAdminMode.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
powerdevil =
|
||||||
|
let
|
||||||
|
powerButtonAction = "turnOffScreen";
|
||||||
|
whenSleepingEnter = "standbyThenHibernate";
|
||||||
|
whenLaptopLidClosed = "sleep";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
AC = {
|
||||||
|
inherit powerButtonAction whenSleepingEnter whenLaptopLidClosed;
|
||||||
|
autoSuspend = {
|
||||||
|
action = "sleep";
|
||||||
|
idleTimeout = 7200;
|
||||||
|
};
|
||||||
|
dimDisplay = {
|
||||||
|
enable = true;
|
||||||
|
idleTimeOut = 300;
|
||||||
|
};
|
||||||
|
turnOffDisplay = {
|
||||||
|
idleTimeout = 1800;
|
||||||
|
idleTimeoutWhenLocked = 120;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
battery = {
|
||||||
|
inherit powerButtonAction whenSleepingEnter whenLaptopLidClosed;
|
||||||
|
autoSuspend = {
|
||||||
|
action = "sleep";
|
||||||
|
idleTimeout = 900;
|
||||||
|
};
|
||||||
|
dimDisplay = {
|
||||||
|
enable = true;
|
||||||
|
idleTimeOut = 120;
|
||||||
|
};
|
||||||
|
turnOffDisplay = {
|
||||||
|
idleTimeout = 300;
|
||||||
|
idleTimeoutWhenLocked = 60;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lowBattery = {
|
||||||
|
inherit powerButtonAction whenSleepingEnter whenLaptopLidClosed;
|
||||||
|
autoSuspend = {
|
||||||
|
action = "hibernate";
|
||||||
|
idleTimeout = 300;
|
||||||
|
};
|
||||||
|
dimDisplay = {
|
||||||
|
enable = true;
|
||||||
|
idleTimeOut = 60;
|
||||||
|
};
|
||||||
|
turnOffDisplay = {
|
||||||
|
idleTimeout = 120;
|
||||||
|
idleTimeoutWhenLocked = "immediately";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
configFile = {
|
||||||
|
baloofilerc."Basic Settings"."Indexing-Enabled" = false;
|
||||||
|
kcminputrc.Keyboard.NumLock = 1;
|
||||||
|
yakuakerc = {
|
||||||
|
Dialogs.FirstRun = false;
|
||||||
|
Window = {
|
||||||
|
DynamicTabTitles = true;
|
||||||
|
Height = 80;
|
||||||
|
Width = 80;
|
||||||
|
KeepOpen = true;
|
||||||
|
ShowSystrayIcon = false;
|
||||||
|
ShowTitleBar = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
plasmanotifyrc = {
|
||||||
|
Notifications = {
|
||||||
|
NormalAlwaysOnTop = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
krunnerrc = {
|
||||||
|
General = {
|
||||||
|
ActivateWhenTypingOnDesktop = false;
|
||||||
|
FreeFloating = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
kscreenlockerrc = {
|
||||||
|
Daemon.Timeout = 15;
|
||||||
|
Greeter.WallpaperPlugin = "org.kde.potd";
|
||||||
|
};
|
||||||
|
klipperrc = {
|
||||||
|
General = {
|
||||||
|
SyncClipboards = true;
|
||||||
|
MaxClipItems = 5;
|
||||||
|
IgnoreImages = false;
|
||||||
|
KeepClipboardContents = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
kdeglobals = {
|
||||||
|
General =
|
||||||
|
let
|
||||||
|
AccentColor =
|
||||||
|
let
|
||||||
|
r = config.lib.stylix.scheme."base0D-rgb-r";
|
||||||
|
g = config.lib.stylix.scheme."base0D-rgb-g";
|
||||||
|
b = config.lib.stylix.scheme."base0D-rgb-b";
|
||||||
|
in
|
||||||
|
"${r}, ${g}, ${b}";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit AccentColor;
|
||||||
|
LastUsedCustomAccentColor = AccentColor;
|
||||||
|
TerminalApplication = "konsole";
|
||||||
|
TerminalService = "org.kde.konsole.desktop";
|
||||||
|
};
|
||||||
|
WM = {
|
||||||
|
# TODO convert to base16 colours at some point
|
||||||
|
activeBackground = "227,229,231";
|
||||||
|
activeBlend = "227,229,231";
|
||||||
|
activeForeground = "35,38,41";
|
||||||
|
inactiveBackground = "239,240,241";
|
||||||
|
inactiveBlend = "239,240,241";
|
||||||
|
inactiveForeground = "112,125,138";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
breezerc = {
|
||||||
|
Common = {
|
||||||
|
OutlineClassButton = true;
|
||||||
|
OutlineCloseButtone = true;
|
||||||
|
ShadowSize = "ShadowVeryLarge";
|
||||||
|
ShadowStrength = "128";
|
||||||
|
};
|
||||||
|
Style = {
|
||||||
|
MenuOpacity = "100";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
dolphinrc = {
|
||||||
|
ContentDisplay = {
|
||||||
|
UsePermissionsFormat = "CombinedFormat";
|
||||||
|
};
|
||||||
|
General = {
|
||||||
|
BrowseThroughArchives = true;
|
||||||
|
OpenNewTabAfterLastTab = true;
|
||||||
|
RememberOpenedTabs = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
kwinrc = {
|
||||||
|
Plugins = {
|
||||||
|
frozenappEnabled = false;
|
||||||
|
mouseclickEnabled = true;
|
||||||
|
shakecursorEnabled = false;
|
||||||
|
invertEnabled = true;
|
||||||
|
};
|
||||||
|
Windows = {
|
||||||
|
FocusPolicy = "FocusFollowsMouse";
|
||||||
|
RollOverDesktops = true;
|
||||||
|
};
|
||||||
|
NightColor = {
|
||||||
|
Active = true;
|
||||||
|
Mode = "Location";
|
||||||
|
LatitudeFixed = "51.7";
|
||||||
|
LongitudeFixed = "-1.2";
|
||||||
|
};
|
||||||
|
"Effect-translucency" = {
|
||||||
|
# Re-enable translucency when I can work out how to apply
|
||||||
|
# blur to all windows
|
||||||
|
Inactive = 100;
|
||||||
|
MoveResize = 100;
|
||||||
|
Dialogs = 100;
|
||||||
|
ComboboxPopups = 100;
|
||||||
|
Menus = 100;
|
||||||
|
};
|
||||||
|
"org.kde.kdecoration2" = {
|
||||||
|
BorderSize = "None";
|
||||||
|
BorderSizeAuto = "false";
|
||||||
|
};
|
||||||
|
"Script-krohnkite" = {
|
||||||
|
limitTileWidth = true;
|
||||||
|
screenGapBottom = 5;
|
||||||
|
screenGapLeft = 5;
|
||||||
|
screenGapRight = 5;
|
||||||
|
screenGapTop = 5;
|
||||||
|
tileLayoutGap = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xdg.configFile."autostart/org.kde.yakuake.desktop".source = "${pkgs.yakuake}/share/applications/org.kde.yakuake.desktop";
|
||||||
|
}
|
15
system/home/plasma/klassy.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# sudo pacman -S git frameworkintegration gcc-libs glibc kcmutils kcolorscheme kconfig kcoreaddons kdecoration kguiaddons ki18n kiconthemes kirigami kwidgetsaddons kwindowsystem qt6-base qt6-declarative qt6-svg xdg-utils extra-cmake-modules kcmutils5 frameworkintegration5 kconfigwidgets5 kiconthemes5 kirigami2 kwindowsystem5
|
||||||
|
{ mkDerivation, fetchFromGithub }:
|
||||||
|
let
|
||||||
|
pname = "klassy";
|
||||||
|
version = "6.1.breeze6.0.3";
|
||||||
|
in
|
||||||
|
mkDerivation {
|
||||||
|
inherit pname version;
|
||||||
|
src = fetchFromGithub {
|
||||||
|
owner = "paulmcauley";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
hash = "";
|
||||||
|
};
|
||||||
|
}
|
42
system/home/plasma/konsole.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.yakuake ];
|
||||||
|
programs.konsole = {
|
||||||
|
enable = true;
|
||||||
|
defaultProfile = "One-Light";
|
||||||
|
customColorSchemes.onelight = ./onelight.colorscheme;
|
||||||
|
profiles.onelight = {
|
||||||
|
name = "One-Light";
|
||||||
|
colorScheme = "onelight";
|
||||||
|
command = "${config.programs.fish.package}/bin/fish";
|
||||||
|
font = {
|
||||||
|
inherit (config.stylix.fonts.monospace) name;
|
||||||
|
size = config.stylix.fonts.sizes.terminal;
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
"Interaction Options" = {
|
||||||
|
TextEditorCmd = 6;
|
||||||
|
TextEditorCmdCustom = "emacsclient -c +LINE:COLUMN PATH";
|
||||||
|
UnderlineFilesEnabled = true;
|
||||||
|
OpenLinksByDirectClickEnabled = true;
|
||||||
|
};
|
||||||
|
"Terminal Features" = {
|
||||||
|
BlinkingCursorEnabled = true;
|
||||||
|
VerticalLine = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
MainWindow = {
|
||||||
|
MenuBar = "Disabled";
|
||||||
|
};
|
||||||
|
TabBar = {
|
||||||
|
ExpandTabWidth = true;
|
||||||
|
NewTabButton = true;
|
||||||
|
};
|
||||||
|
ThumbnailsSettings = {
|
||||||
|
ThumbnailAlt = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
20
system/home/plasma/krohnkite.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.libsForQt5.krohnkite.overrideAttrs (
|
||||||
|
final: prev:
|
||||||
|
let
|
||||||
|
version = "0.9.7";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit version;
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "anametologin";
|
||||||
|
repo = "krohnkite";
|
||||||
|
rev = version;
|
||||||
|
hash = "sha256-8A3zW5tK8jK9fSxYx28b8uXGsvxEoUYybU0GaMD2LNw=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
))
|
||||||
|
];
|
||||||
|
}
|
100
system/home/plasma/onelight.colorscheme
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
[Background]
|
||||||
|
Color=250,250,250
|
||||||
|
|
||||||
|
[BackgroundFaint]
|
||||||
|
Color=250,250,250
|
||||||
|
|
||||||
|
[BackgroundIntense]
|
||||||
|
Color=250,250,250
|
||||||
|
|
||||||
|
[Color0]
|
||||||
|
Color=250,250,250
|
||||||
|
|
||||||
|
[Color0Faint]
|
||||||
|
Color=160,161,167
|
||||||
|
|
||||||
|
[Color0Intense]
|
||||||
|
Color=160,161,167
|
||||||
|
|
||||||
|
[Color1]
|
||||||
|
Color=202,18,67
|
||||||
|
|
||||||
|
[Color1Faint]
|
||||||
|
Color=202,18,67
|
||||||
|
|
||||||
|
[Color1Intense]
|
||||||
|
Color=202,18,67
|
||||||
|
|
||||||
|
[Color2]
|
||||||
|
Color=80,161,79
|
||||||
|
|
||||||
|
[Color2Faint]
|
||||||
|
Color=80,161,79
|
||||||
|
|
||||||
|
[Color2Intense]
|
||||||
|
Color=80,161,79
|
||||||
|
|
||||||
|
[Color3]
|
||||||
|
Color=215,95,0
|
||||||
|
|
||||||
|
[Color3Faint]
|
||||||
|
Color=215,95,0
|
||||||
|
|
||||||
|
[Color3Intense]
|
||||||
|
Color=215,95,0
|
||||||
|
|
||||||
|
[Color4]
|
||||||
|
Color=64,120,242
|
||||||
|
|
||||||
|
[Color4Faint]
|
||||||
|
Color=64,120,242
|
||||||
|
|
||||||
|
[Color4Intense]
|
||||||
|
Color=64,120,242
|
||||||
|
|
||||||
|
[Color5]
|
||||||
|
Color=166,38,164
|
||||||
|
|
||||||
|
[Color5Faint]
|
||||||
|
Color=166,38,164
|
||||||
|
|
||||||
|
[Color5Intense]
|
||||||
|
Color=166,38,164
|
||||||
|
|
||||||
|
[Color6]
|
||||||
|
Color=1,132,188
|
||||||
|
|
||||||
|
[Color6Faint]
|
||||||
|
Color=1,132,188
|
||||||
|
|
||||||
|
[Color6Intense]
|
||||||
|
Color=1,132,188
|
||||||
|
|
||||||
|
[Color7]
|
||||||
|
Color=56,58,66
|
||||||
|
|
||||||
|
[Color7Faint]
|
||||||
|
Color=9,10,11
|
||||||
|
|
||||||
|
[Color7Intense]
|
||||||
|
Color=9,10,11
|
||||||
|
|
||||||
|
[Foreground]
|
||||||
|
Color=56,58,66
|
||||||
|
|
||||||
|
[ForegroundFaint]
|
||||||
|
Color=56,58,66
|
||||||
|
|
||||||
|
[ForegroundIntense]
|
||||||
|
Color=56,58,66
|
||||||
|
|
||||||
|
[General]
|
||||||
|
Anchor=0.5,0.5
|
||||||
|
Blur=true
|
||||||
|
ColorRandomization=false
|
||||||
|
Description=One Light
|
||||||
|
FillStyle=Tile
|
||||||
|
Opacity=1.0
|
||||||
|
Wallpaper=
|
||||||
|
WallpaperFlipType=NoFlip
|
||||||
|
WallpaperOpacity=1
|
15
system/home/scripts/default.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
packages = [
|
||||||
|
(pkgs.writeShellScriptBin "esync" (builtins.readFile ./shell/esync.sh))
|
||||||
|
(pkgs.writeShellScriptBin "git-sync-all" (builtins.readFile ./shell/git-sync-all.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))
|
||||||
|
];
|
||||||
|
shellAliases = {
|
||||||
|
gsa = "git-sync-all";
|
||||||
|
gsad = "git-sync-all && shutdown now";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
38
system/home/scripts/lua/sync-all.lua
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
--[[
|
||||||
|
#!nix-shell -i lua -p git git-sync
|
||||||
|
]]
|
||||||
|
local config_home
|
||||||
|
if os.getenv("XDG_CONFIG_HOME") then
|
||||||
|
config_home = os.getenv("XDG_CONFIG_HOME")
|
||||||
|
else
|
||||||
|
config_home = "~/.config/"
|
||||||
|
end
|
||||||
|
|
||||||
|
local sync_mapping = {
|
||||||
|
["~/.password-store"] = "https://git.xenia.me.uk/pixelifytica/pass.git",
|
||||||
|
["~/.elfeed"] = "https://git.xenia.me.uk/pixelifytica/elfeed.git",
|
||||||
|
["~/Documents/Org"] = "https://git.xenia.me.uk/pixelifytica/org.git",
|
||||||
|
["~/Documents/References"] = "https://git.xenia.me.uk/pixelifytica/references.git",
|
||||||
|
}
|
||||||
|
|
||||||
|
local pull_mapping = {
|
||||||
|
["/etc/nixos"] = "https://git.xenia.me.uk/pixelifytica/nixos.git",
|
||||||
|
[config_home .. "/emacs"] = "https://git.xenia.me.uk/pixelifytica/emacs.git",
|
||||||
|
}
|
||||||
|
|
||||||
|
local function git_sync(directory, url)
|
||||||
|
print("--- sync: " .. directory .. " ---")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function git_pull(directory, url, ff_only)
|
||||||
|
print("--- pull: " .. directory .. " ---")
|
||||||
|
end
|
||||||
|
|
||||||
|
for directory, url in pairs(sync_mapping) do
|
||||||
|
git_sync(directory, url)
|
||||||
|
end
|
||||||
|
|
||||||
|
for directory, url in pairs(pull_mapping) do
|
||||||
|
git_pull(directory, url, true)
|
||||||
|
end
|
68
system/home/scripts/python/sync-all.py
Executable file
|
@ -0,0 +1,68 @@
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i python3 -p git git-sync
|
||||||
|
|
||||||
|
import os
|
||||||
|
import queue
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Dict
|
||||||
|
|
||||||
|
HOME = Path("~").expanduser().resolve()
|
||||||
|
|
||||||
|
SYNC_MAPPING: Dict[Path, str] = {
|
||||||
|
Path(
|
||||||
|
"~/.password-store"
|
||||||
|
).expanduser(): "https://git.xenia.me.uk/pixelifytica/pass.git",
|
||||||
|
Path("~/.elfeed").expanduser(): "https://git.xenia.me.uk/pixelifytica/elfeed.git",
|
||||||
|
Path(
|
||||||
|
"~/Documents/Org"
|
||||||
|
).expanduser(): "https://git.xenia.me.uk/pixelifytica/org.git",
|
||||||
|
Path(
|
||||||
|
"~/Documents/References"
|
||||||
|
).expanduser(): "https://git.xenia.me.uk/pixelifytica/references.git",
|
||||||
|
}
|
||||||
|
|
||||||
|
PULL_MAPPINGS: Dict[Path, str] = {
|
||||||
|
Path("/etc/nixos"): "https://git.xenia.me.uk/pixelifytica/nixos.git",
|
||||||
|
Path(os.getenv("XDG_CONFIG_HOME", "~/.config")).expanduser()
|
||||||
|
/ "emacs": "https://git.xenia.me.uk/pixelifytica/emacs.git",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def git_set_url(directory: Path, url: str) -> None:
|
||||||
|
"""Set url for directory"""
|
||||||
|
comp = subprocess.run(f"git remote set-url origin {url}".split(), cwd=directory)
|
||||||
|
if comp.returncode != 0:
|
||||||
|
raise UserWarning(f"{comp.returncode} from {' '.join(comp.args)}")
|
||||||
|
subprocess.run("git remote -v".split(), cwd=directory)
|
||||||
|
|
||||||
|
|
||||||
|
def git_sync(directory: Path, url: str) -> subprocess.CompletedProcess:
|
||||||
|
"""Sync status of repository"""
|
||||||
|
print(f"--- sync: ${directory} ---")
|
||||||
|
if not directory.exists():
|
||||||
|
return subprocess.run("exit 1".split()) # TODO
|
||||||
|
git_set_url(directory, url)
|
||||||
|
return subprocess.run("git-sync -ns".split(), cwd=directory)
|
||||||
|
|
||||||
|
|
||||||
|
def git_pull(
|
||||||
|
directory: Path, url: str, ff_only: bool = True
|
||||||
|
) -> subprocess.CompletedProcess:
|
||||||
|
"""Pull updates for directory from url"""
|
||||||
|
print(f"--- pull: {directory} ---")
|
||||||
|
if not directory.exists():
|
||||||
|
return subprocess.run("exit 1".split()) # TODO
|
||||||
|
git_set_url(directory, url)
|
||||||
|
return subprocess.run("git pull --ff-only".split(), cwd=directory)
|
||||||
|
|
||||||
|
|
||||||
|
def main(*args, **kwargs) -> None:
|
||||||
|
for directory, url in SYNC_MAPPING.items():
|
||||||
|
print(git_sync(directory, url))
|
||||||
|
for directory, url in PULL_MAPPINGS.items():
|
||||||
|
print(git_pull(directory, url))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
14
system/home/scripts/shell/esync.sh
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# Clone ~/.config/emacs/ if it doesn't exist
|
||||||
|
EMACS_DIR="${XDG_CONFIG_DIR:=$HOME/.config}/emacs/"
|
||||||
|
if [ ! -d "$EMACS_DIR" ]; then
|
||||||
|
git clone "https://git.xenia.me.uk/pixelifytica/emacs.git" "$EMACS_DIR"
|
||||||
|
fi
|
||||||
|
(
|
||||||
|
cd "$EMACS_DIR" || exit 1
|
||||||
|
# Pull changes by fast-forwarding only
|
||||||
|
git pull --ff --ff-only
|
||||||
|
# Update submodules for local packages
|
||||||
|
git submodule update --init --recursive
|
||||||
|
# Install and update extensions
|
||||||
|
make install
|
||||||
|
)
|
31
system/home/scripts/shell/git-sync-all.sh
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
# 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
|
4
system/home/scripts/shell/low-battery.sh
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
battery_level=$(acpi -b | grep -P -o '[0-9]+(?=%)')
|
||||||
|
if [ "$battery_level" -le 20 ]; then
|
||||||
|
notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
|
||||||
|
fi
|
33
system/home/scripts/shell/rsync-local-config.sh
Executable file
|
@ -0,0 +1,33 @@
|
||||||
|
HOSTS=("$@")
|
||||||
|
# Config files
|
||||||
|
for TARGET in ".inputrc" ".config/bat/" ".config/zellij" ".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
|
||||||
|
|
||||||
|
# Fonts
|
||||||
|
IOSEVKA_FLAKE_URL="git+https://git.xenia.me.uk/pixelifytica/iosevka.git?ref=main"
|
||||||
|
IOSEVKA_CUSTOM_NERDFONT=$(nix path-info "$IOSEVKA_FLAKE_URL#packages.x86_64-linux.iosevka-custom-nerdfont")
|
||||||
|
IOSEVKA_CUSTOM_AILE=$(nix path-info "$IOSEVKA_FLAKE_URL#packages.x86_64-linux.iosevka-custom-aile")
|
||||||
|
echo "--- Fonts ---"
|
||||||
|
for HOST in "${HOSTS[@]}"; do
|
||||||
|
rsync -avzL --delete --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$IOSEVKA_CUSTOM_NERDFONT/share/fonts/truetype/" "$HOST:.fonts/IosevkaCustomNerdFont"
|
||||||
|
rsync -avzL --delete --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$IOSEVKA_CUSTOM_AILE/share/fonts/truetype/" "$HOST:.fonts/IosevkaCustomAile"
|
||||||
|
done
|
3
system/home/scripts/shell/xdg-query-program.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
FILETYPE=$(xdg-mime query filetype $@)
|
||||||
|
DEFAULT=$(xdg-mime query default $FILETYPE)
|
||||||
|
echo "$FILETYPE -> $DEFAULT"
|
39
system/home/services/email/davmail.properties
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
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
|
176
system/home/services/email/default.nix
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellScriptBin "mbsync-ensure-pass" (builtins.readFile ./mbsync-ensure-pass.sh))
|
||||||
|
(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/5"; # Every 5 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" ];
|
||||||
|
};
|
||||||
|
}
|
15
system/home/services/email/mbsync-ensure-pass.sh
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
EMAIL_ADDRESSES=(
|
||||||
|
e.litherlandsmith@proton.me
|
||||||
|
e.litherlandsmith@icloud.com
|
||||||
|
evie.litherland-smith@ukaea.uk
|
||||||
|
)
|
||||||
|
LABELS=("Proton" "iCloud" "Outlook")
|
||||||
|
|
||||||
|
for i in "${!EMAIL_ADDRESSES[@]}"; do
|
||||||
|
ADDRESS="${EMAIL_ADDRESSES[$i]}"
|
||||||
|
LABEL="${LABELS[$i]}"
|
||||||
|
secret-tool lookup email "$ADDRESS" >/dev/null || (
|
||||||
|
echo "Setup $LABEL"
|
||||||
|
secret-tool store --label="$LABEL mail mbsync" email "$ADDRESS"
|
||||||
|
)
|
||||||
|
done
|
3
system/home/services/email/signatures/personal
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
--
|
||||||
|
Evelyn Litherland-Smith (she/they)
|
||||||
|
email: evie@xenia.me.uk
|
5
system/home/services/email/signatures/work
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
--
|
||||||
|
Evelyn Litherland-Smith (she/they)
|
||||||
|
Spectroscopy Diagnostic Physicist
|
||||||
|
Plasma Science and Fusion Operations
|
||||||
|
UK Atomic Energy Authority
|
41
system/home/services/password-store/default.nix
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
xdg.configFile."pass-git-helper/git-pass-mapping.ini".source = ./git-pass-mapping.ini;
|
||||||
|
programs = {
|
||||||
|
gpg.enable = true;
|
||||||
|
password-store = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.pass-nodmenu.withExtensions (
|
||||||
|
exts: with exts; [
|
||||||
|
pass-update
|
||||||
|
pass-import
|
||||||
|
]
|
||||||
|
); # pass-audit
|
||||||
|
settings = {
|
||||||
|
PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store";
|
||||||
|
PASSWORD_STORE_ENABLE_EXTENSIONS = "true";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
gpg-agent = rec {
|
||||||
|
enable = true;
|
||||||
|
maxCacheTtl = 86400;
|
||||||
|
defaultCacheTtl = maxCacheTtl;
|
||||||
|
defaultCacheTtlSsh = maxCacheTtl;
|
||||||
|
pinentryPackage = lib.mkDefault pkgs.pinentry-all;
|
||||||
|
extraConfig = ''
|
||||||
|
no-allow-external-cache
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
git-sync.repositories.password-store = {
|
||||||
|
path = "${config.home.homeDirectory}/.password-store";
|
||||||
|
uri = "git+https://git.xenia.me.uk/xenia/pass.git";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
6
system/home/services/password-store/git-pass-mapping.ini
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[DEFAULT]
|
||||||
|
username_extractor=regex_search
|
||||||
|
regex_username=^login: (.*)$
|
||||||
|
|
||||||
|
[*]
|
||||||
|
target=git/${host}
|
131
system/home/shell/default.nix
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./git.nix
|
||||||
|
./ssh.nix
|
||||||
|
./starship.nix
|
||||||
|
];
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
rclone
|
||||||
|
git-sync
|
||||||
|
du-dust
|
||||||
|
];
|
||||||
|
programs = {
|
||||||
|
bash.enable = true;
|
||||||
|
fastfetch.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
|
fd.enable = true;
|
||||||
|
jq.enable = true;
|
||||||
|
nix-index.enable = true;
|
||||||
|
ripgrep.enable = true;
|
||||||
|
bat = {
|
||||||
|
enable = true;
|
||||||
|
config.style = "plain,numbers,changes";
|
||||||
|
};
|
||||||
|
bottom = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
flags = {
|
||||||
|
group_processes = true;
|
||||||
|
temperature_type = "celsius";
|
||||||
|
battery = true;
|
||||||
|
enable_gpu = true;
|
||||||
|
enable_cache_memory = true;
|
||||||
|
};
|
||||||
|
colors =
|
||||||
|
let
|
||||||
|
rainbow = with config.lib.stylix.scheme.withHashtag; [
|
||||||
|
red
|
||||||
|
yellow
|
||||||
|
green
|
||||||
|
cyan
|
||||||
|
blue
|
||||||
|
magenta
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
cpu_core_colors = rainbow;
|
||||||
|
gpu_core_colors = rainbow;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
eza = {
|
||||||
|
enable = true;
|
||||||
|
git = true;
|
||||||
|
icons = true;
|
||||||
|
extraOptions = [ "--octal-permissions" ];
|
||||||
|
};
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
defaultCommand = "${pkgs.fd}/bin/fd --type f";
|
||||||
|
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
||||||
|
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
|
||||||
|
};
|
||||||
|
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";
|
||||||
|
horizontal-scroll-mode = "On";
|
||||||
|
mark-directories = "On";
|
||||||
|
mark-symlinked-directories = "On";
|
||||||
|
visible-stats = "On";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
zellij = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default_mode = "locked";
|
||||||
|
mouse_mode = true;
|
||||||
|
copy_command = lib.mkIf config.wayland.windowManager.sway.enable "wl-copy";
|
||||||
|
copy_on_select = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
autocd = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
defaultKeymap = "emacs";
|
||||||
|
syntaxHighlighting = {
|
||||||
|
enable = true;
|
||||||
|
highlighters = [
|
||||||
|
"brackets"
|
||||||
|
"cursor"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
historySubstringSearch.enable = true;
|
||||||
|
history = {
|
||||||
|
extended = true;
|
||||||
|
share = true;
|
||||||
|
ignoreDups = true;
|
||||||
|
ignoreAllDups = true;
|
||||||
|
ignoreSpace = true;
|
||||||
|
expireDuplicatesFirst = true;
|
||||||
|
};
|
||||||
|
initExtra = ''
|
||||||
|
## completion config and styling
|
||||||
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
|
||||||
|
zstyle ':completion:*' menu 'select=long-list'
|
||||||
|
|
||||||
|
## transient prompt
|
||||||
|
source ${./transient.zsh}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
56
system/home/shell/git.nix
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
services.git-sync.enable = false; # Can't find pass for some reason...
|
||||||
|
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 =
|
||||||
|
let
|
||||||
|
user = "pixelifytica";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
github = {
|
||||||
|
inherit user;
|
||||||
|
};
|
||||||
|
gitea = {
|
||||||
|
inherit user;
|
||||||
|
};
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
44
system/home/shell/ssh.nix
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
(writeShellScriptBin "ssh-keygen-defaults" ''ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"'')
|
||||||
|
];
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
addKeysToAgent = "yes";
|
||||||
|
forwardAgent = true;
|
||||||
|
compression = true;
|
||||||
|
serverAliveInterval = 15;
|
||||||
|
serverAliveCountMax = 3;
|
||||||
|
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 = "10.40.4.115"; # heimdall115.jetdata.eu
|
||||||
|
compression = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
170
system/home/shell/starship.nix
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
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)";
|
||||||
|
bash_indicator = " ";
|
||||||
|
fish_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 = " ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
31
system/home/shell/transient.zsh
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
zle-line-init() {
|
||||||
|
emulate -L zsh
|
||||||
|
|
||||||
|
[[ $CONTEXT == start ]] || return 0
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
zle .recursive-edit
|
||||||
|
local -i ret=$?
|
||||||
|
[[ $ret == 0 && $KEYS == $'\4' ]] || break
|
||||||
|
[[ -o ignore_eof ]] || exit 0
|
||||||
|
done
|
||||||
|
|
||||||
|
local saved_prompt=$PROMPT
|
||||||
|
local saved_rprompt=$RPROMPT
|
||||||
|
PROMPT=' '
|
||||||
|
RPROMPT=''
|
||||||
|
zle .reset-prompt
|
||||||
|
PROMPT=$saved_prompt
|
||||||
|
RPROMPT=$saved_rprompt
|
||||||
|
|
||||||
|
if ((ret)); then
|
||||||
|
zle .send-break
|
||||||
|
else
|
||||||
|
zle .accept-line
|
||||||
|
fi
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
zle -N zle-line-init
|
251
system/home/sway/default.nix
Normal file
|
@ -0,0 +1,251 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [ ./waybar/default.nix ];
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ffmpeg
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
wl-clipboard
|
||||||
|
swayimg
|
||||||
|
swaybg
|
||||||
|
(writeShellScriptBin "protonmail-setup-bridge" ''
|
||||||
|
pkill -9 -f protonmail-bridge
|
||||||
|
${protonmail-bridge}/bin/protonmail-bridge -c
|
||||||
|
swaymsg exec "${protonmail-bridge}/bin/protonmail-bridge -n"
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
programs = {
|
||||||
|
waybar.systemd.target = "sway-session.target";
|
||||||
|
swaylock.enable = true;
|
||||||
|
fuzzel = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
main = {
|
||||||
|
icon-theme = config.gtk.iconTheme.name;
|
||||||
|
icons-enabled = true;
|
||||||
|
fields = "filename,name,generic,categories";
|
||||||
|
fuzzy = true;
|
||||||
|
filter-desktop = true;
|
||||||
|
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
|
||||||
|
lines = 24;
|
||||||
|
width = 80;
|
||||||
|
tabs = 4;
|
||||||
|
layer = "overlay";
|
||||||
|
};
|
||||||
|
border = {
|
||||||
|
width = 1;
|
||||||
|
radius = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
wlogout = {
|
||||||
|
enable = true;
|
||||||
|
layout = [
|
||||||
|
{
|
||||||
|
label = "reboot";
|
||||||
|
action = "systemctl reboot";
|
||||||
|
text = "Reboot";
|
||||||
|
keybind = "r";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "shutdown";
|
||||||
|
action = "systemctl poweroff";
|
||||||
|
text = "Shutdown";
|
||||||
|
keybind = "s";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "logout";
|
||||||
|
action = "swaymsg exit";
|
||||||
|
text = "Logout";
|
||||||
|
keybind = "l";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
kanshi.systemdTarget = "sway-session.target";
|
||||||
|
gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||||
|
avizo = {
|
||||||
|
enable = true;
|
||||||
|
settings.default.image-opacity = lib.mkForce "1.0";
|
||||||
|
};
|
||||||
|
kdeconnect = {
|
||||||
|
enable = true;
|
||||||
|
indicator = true;
|
||||||
|
};
|
||||||
|
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 = 5;
|
||||||
|
borderSize = 1;
|
||||||
|
defaultTimeout = 0;
|
||||||
|
};
|
||||||
|
swayidle = {
|
||||||
|
enable = true;
|
||||||
|
timeouts = [
|
||||||
|
{
|
||||||
|
timeout = 60 * 15; # 15 minutes
|
||||||
|
command = "swaylock";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
udiskie = {
|
||||||
|
enable = true;
|
||||||
|
notify = true;
|
||||||
|
automount = true;
|
||||||
|
tray = "never";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
iconTheme = {
|
||||||
|
package = pkgs.papirus-icon-theme.override { color = "violet"; };
|
||||||
|
name = "Papirus-${(import ../lib/to_capital.nix lib) config.lib.stylix.scheme.variant}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.swayfx.overrideAttrs (old: {
|
||||||
|
passthru.providedSessions = [ "sway" ];
|
||||||
|
});
|
||||||
|
swaynag.enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
xwayland = true;
|
||||||
|
checkConfig = false;
|
||||||
|
config = {
|
||||||
|
input = {
|
||||||
|
"*" = {
|
||||||
|
xkb_layout = "gb";
|
||||||
|
xkb_options = "ctrl:nocaps";
|
||||||
|
};
|
||||||
|
"type:touchpad" = {
|
||||||
|
tap = "enabled";
|
||||||
|
natural_scroll = "enabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
seat = {
|
||||||
|
"seat0" = {
|
||||||
|
xcursor_theme = "${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
modifier = "Mod4";
|
||||||
|
terminal = "${config.programs.alacritty.package}/bin/alacritty";
|
||||||
|
menu = "${config.programs.fuzzel.package}/bin/fuzzel";
|
||||||
|
workspaceAutoBackAndForth = true;
|
||||||
|
bars = [ ];
|
||||||
|
gaps = {
|
||||||
|
inner = 5;
|
||||||
|
outer = 0;
|
||||||
|
};
|
||||||
|
startup = [
|
||||||
|
{ command = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"; }
|
||||||
|
{ command = "${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"; }
|
||||||
|
{ command = "${pkgs.dex}/bin/dex -a"; }
|
||||||
|
{ command = "${config.services.mako.package}/bin/mako"; }
|
||||||
|
];
|
||||||
|
window = {
|
||||||
|
border = 1;
|
||||||
|
titlebar = false;
|
||||||
|
commands = [
|
||||||
|
{
|
||||||
|
criteria.window_role = "(?:pop-up|bubble|dialog)";
|
||||||
|
command = "floating enable";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria.app_id = "(?:org\.kde\.polkit-kde-authentication-agent-1|Pinentry|pavucontrol|\.blueman-manager-wrapped|nm-connection-editor)";
|
||||||
|
command = "floating enable";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria.class = "(?:[Mm]atplotlib|.*\.py|Idl)";
|
||||||
|
command = "floating enable";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# Catch-all for file dialog windows
|
||||||
|
criteria.title = "(?:Open|Save) (?:File|Folder|As)";
|
||||||
|
command = "floating enable, resize set width 1030 height 710";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# Inhibit idle when watching vidoes
|
||||||
|
criteria.app_id = "(?:firefox|mpv)";
|
||||||
|
command = "inhibit_idle fullscreen";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# Window rules for game sessions.
|
||||||
|
# Note: controllers don't reset idle timer
|
||||||
|
criteria.class = "(?:steam_app|Minecraft).*";
|
||||||
|
command = "floating enable, fullscreen enable, inhibit_idle focus";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
floating.border = 1;
|
||||||
|
keybindings =
|
||||||
|
let
|
||||||
|
modifier = config.wayland.windowManager.sway.config.modifier;
|
||||||
|
in
|
||||||
|
lib.mkOptionDefault {
|
||||||
|
# Movement
|
||||||
|
"${modifier}+comma" = "workspace prev";
|
||||||
|
"${modifier}+period" = "workspace next";
|
||||||
|
"${modifier}+shift+comma" = "move workspace prev";
|
||||||
|
"${modifier}+shift+period" = "move workspace next";
|
||||||
|
"${modifier}+bracketleft" = "move workspace to output left";
|
||||||
|
"${modifier}+bracketright" = "move workspace to output right";
|
||||||
|
|
||||||
|
# Function keys
|
||||||
|
## Sound
|
||||||
|
"XF86AudioMute" = "exec ${config.services.avizo.package}/bin/volumectl %";
|
||||||
|
"XF86AudioMicMute" = "exec ${config.services.avizo.package}/bin/volumectl -m %";
|
||||||
|
"XF86AudioRaiseVolume" = "exec ${config.services.avizo.package}/bin/volumectl -u + 5";
|
||||||
|
"XF86AudioLowerVolume" = "exec ${config.services.avizo.package}/bin/volumectl -u - 5";
|
||||||
|
|
||||||
|
## 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";
|
||||||
|
|
||||||
|
## Brightness
|
||||||
|
"XF86MonBrightnessUp" = "exec ${config.services.avizo.package}/bin/lightctl + 5";
|
||||||
|
"XF86MonBrightnessDown" = "exec ${config.services.avizo.package}/bin/lightctl - 5";
|
||||||
|
|
||||||
|
# System utilities
|
||||||
|
"Mod4+Mod1+l" = "exec swaylock";
|
||||||
|
"${modifier}+z" = "exec ${config.services.mako.package}/bin/makoctl restore";
|
||||||
|
"${modifier}+Shift+z" = "exec ${config.services.mako.package}/bin/makoctl dismiss -a";
|
||||||
|
"${modifier}+Shift+p" = "exec ${config.programs.wlogout.package}/bin/wlogout";
|
||||||
|
"${modifier}+Shift+Return" = "exec ${config.programs.emacs.finalPackage}/bin/emacsclient -c";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
bindgesture swipe:right workspace prev
|
||||||
|
bindgesture swipe:left workspace next
|
||||||
|
corner_radius 5
|
||||||
|
blur enable
|
||||||
|
blur_xray disable
|
||||||
|
blur_passes 3
|
||||||
|
blur_radius 5
|
||||||
|
shadows enable
|
||||||
|
shadow_blur_radius 5
|
||||||
|
layer_effects "system-menu" blur enable; blur_ignore_transparent enable; shadows enable
|
||||||
|
layer_effects "gtk-layer-shell" blur enable; blur_ignore_transparent enable; shadows enable
|
||||||
|
layer_effects "notifications" blur enable; blur_ignore_transparent enable; shadows enable
|
||||||
|
layer_effects "launcher" blur enable; blur_ignore_transparent enable; shadows enable
|
||||||
|
layer_effects "logout_dialog" blur enable; blur_ignore_transparent enable; shadows enable
|
||||||
|
layer_effects "waybar" blur enable; blur_ignore_transparent enable; shadows enable
|
||||||
|
layer_effects "avizo" blur enable; blur_ignore_transparent enable; shadows enable
|
||||||
|
titlebar_separator enable
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
390
system/home/sway/waybar/default.nix
Normal file
|
@ -0,0 +1,390 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
stylix.targets.waybar.enable = false;
|
||||||
|
systemd.user.targets.tray.Unit = {
|
||||||
|
Description = "Home Manager System Tray";
|
||||||
|
Requires = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
settings.main = {
|
||||||
|
name = "main";
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
# Layout
|
||||||
|
"modules-left" = [
|
||||||
|
"sway/window"
|
||||||
|
"mpris"
|
||||||
|
];
|
||||||
|
"modules-center" = [ "sway/workspaces" ];
|
||||||
|
"modules-right" = [
|
||||||
|
"custom/notification"
|
||||||
|
"pulseaudio"
|
||||||
|
"network"
|
||||||
|
"bluetooth"
|
||||||
|
"clock#calendar"
|
||||||
|
"clock"
|
||||||
|
"backlight"
|
||||||
|
"battery"
|
||||||
|
"custom/weather"
|
||||||
|
"tray"
|
||||||
|
];
|
||||||
|
# Module config
|
||||||
|
"sway/workspaces" = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
"1" = " ";
|
||||||
|
"2" = " ";
|
||||||
|
"3" = " ";
|
||||||
|
"4" = " ";
|
||||||
|
"5" = " ";
|
||||||
|
"6" = " ";
|
||||||
|
default = " ";
|
||||||
|
urgent = " ";
|
||||||
|
};
|
||||||
|
all-outputs = false;
|
||||||
|
persistent-workspaces = {
|
||||||
|
"1" = [ ];
|
||||||
|
"2" = [ ];
|
||||||
|
"3" = [ ];
|
||||||
|
"4" = [ ];
|
||||||
|
"5" = [ ];
|
||||||
|
"6" = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"sway/window" = {
|
||||||
|
"format" = "{title}";
|
||||||
|
"max-length" = 50;
|
||||||
|
"rewrite" = {
|
||||||
|
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
|
||||||
|
"(alacritty.*)" = " $1";
|
||||||
|
"(.*) - mpv" = " $1";
|
||||||
|
"swayimg: (.*)" = " $1";
|
||||||
|
"(btm)" = " Resource Usage [$1]";
|
||||||
|
"(cava)" = " Music Visualiser [$1]";
|
||||||
|
"(.*) - Thunar" = " $1";
|
||||||
|
"Mozilla Firefox" = " $1";
|
||||||
|
"(.*) — Mozilla Firefox" = " $1";
|
||||||
|
"Nyxt - (.*)" = " $1";
|
||||||
|
"(.*) - Chromium" = " $1";
|
||||||
|
"(Signal.*)" = " $1";
|
||||||
|
"((?:.*)WebCord.*)" = " $1";
|
||||||
|
"(Cartridges.*)" = " $1";
|
||||||
|
"([Ss]team.*)" = " $1";
|
||||||
|
"(Prism Launcher.*)" = " Minecraft ($1)";
|
||||||
|
"(.*)(?: *)PrusaSlicer-(.*)" = " $1 PrusaSlicer ($2)";
|
||||||
|
"(.*)(?: *)PrusaSlicer G-code Viewer-(.*)" = " $1 G-code Viewer ($2)";
|
||||||
|
"FreeCAD (.*)" = " FreeCAD $1";
|
||||||
|
"(.*) - Blender.* " = " $1";
|
||||||
|
"(X2Go Client)" = " $1";
|
||||||
|
"(NoMachine|Nxplayer.bin) (.*)" = " $1 $2";
|
||||||
|
"(.*) \| Microsoft Teams" = " ($1)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
mpris = {
|
||||||
|
"format" = "{player_icon} {artist} - {title} {status_icon}";
|
||||||
|
"tooltip-format" = "{player_icon} ({player}) {dynamic}";
|
||||||
|
"title-len" = 64;
|
||||||
|
"interval" = 1;
|
||||||
|
"dynamic-order" = [
|
||||||
|
"album"
|
||||||
|
"artist"
|
||||||
|
"title"
|
||||||
|
"position"
|
||||||
|
"length"
|
||||||
|
];
|
||||||
|
"player-icons" = {
|
||||||
|
"default" = " ";
|
||||||
|
"emms" = " ";
|
||||||
|
"firefox" = " ";
|
||||||
|
"mpv" = " ";
|
||||||
|
};
|
||||||
|
"status-icons" = {
|
||||||
|
"playing" = "";
|
||||||
|
"paused" = "";
|
||||||
|
"stopped" = "";
|
||||||
|
};
|
||||||
|
"ignored-players" = [ ];
|
||||||
|
};
|
||||||
|
pulseaudio = {
|
||||||
|
scroll-step = 5;
|
||||||
|
format = "{format_source}{icon}{volume}%";
|
||||||
|
format-muted = "{format_source} ";
|
||||||
|
format-source = " ";
|
||||||
|
format-source-muted = " ";
|
||||||
|
format-icons = {
|
||||||
|
car = " ";
|
||||||
|
default = [
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
];
|
||||||
|
hands-free = " ";
|
||||||
|
headset = " ";
|
||||||
|
phone = " ";
|
||||||
|
portable = " ";
|
||||||
|
headphone = " ";
|
||||||
|
};
|
||||||
|
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||||
|
on-click-right = "${pkgs.pamixer}/bin/pamixer -t";
|
||||||
|
on-scroll-up = "${pkgs.pamixer}/bin/pamixer -i 5";
|
||||||
|
on-scroll-down = "${pkgs.pamixer}/bin/pamixer -d 5";
|
||||||
|
};
|
||||||
|
disk = {
|
||||||
|
format = " {percentage_used}%";
|
||||||
|
path = config.home.homeDirectory;
|
||||||
|
};
|
||||||
|
cpu = {
|
||||||
|
format = " {usage}%";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
memory = {
|
||||||
|
format = " {}%";
|
||||||
|
};
|
||||||
|
temperature = {
|
||||||
|
critical-threshold = 80;
|
||||||
|
format = "{icon} {temperatureC}°C";
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
network = {
|
||||||
|
format-icons = [
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
];
|
||||||
|
format-wifi = "{icon}";
|
||||||
|
format-ethernet = " ";
|
||||||
|
format-linked = " ";
|
||||||
|
format-disconnected = " ";
|
||||||
|
tooltip-format = "{essid} ({signalStrength}%)";
|
||||||
|
on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||||
|
};
|
||||||
|
bluetooth = {
|
||||||
|
format = "";
|
||||||
|
format-disabled = "";
|
||||||
|
format-off = "";
|
||||||
|
format-on = "";
|
||||||
|
format-connected = "";
|
||||||
|
tooltip-format = "{status} | {device_alias}";
|
||||||
|
on-click = "${pkgs.blueman}/bin/blueman-manager";
|
||||||
|
};
|
||||||
|
"clock#calendar" = {
|
||||||
|
format = " {:%Y-%m-%d}";
|
||||||
|
tooltip-format = "<tt>{calendar}</tt>";
|
||||||
|
calendar = {
|
||||||
|
mode = "month";
|
||||||
|
mode-mon-col = 3;
|
||||||
|
weeks-pos = "left";
|
||||||
|
on-scroll = 1;
|
||||||
|
format =
|
||||||
|
let
|
||||||
|
scheme = config.lib.stylix.scheme.withHashtag;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
months = "<span color='${scheme.red}'><b>{}</b></span>";
|
||||||
|
weeks = "<span color='${scheme.cyan}'><b>W{}</b></span>";
|
||||||
|
weekdays = "<span color='${scheme.orange}'><b>{}</b></span>";
|
||||||
|
days = "<span color='${scheme.base05}'><b>{}</b></span>";
|
||||||
|
today = "<span color='${scheme.base0D}'><b><i>{}</i></b></span>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
actions = {
|
||||||
|
on-scroll-up = "shift_up";
|
||||||
|
on-scroll-down = "shift_down";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
clock.format = " {:%R}";
|
||||||
|
backlight = {
|
||||||
|
format = "{icon}";
|
||||||
|
tooltip-format = "{percent}%";
|
||||||
|
format-icons = [
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
];
|
||||||
|
};
|
||||||
|
battery = {
|
||||||
|
states = {
|
||||||
|
warning = 20;
|
||||||
|
critical = 10;
|
||||||
|
};
|
||||||
|
format = "{icon}";
|
||||||
|
format-time = "{H}:{m}";
|
||||||
|
format-charging = " ({time})";
|
||||||
|
format-plugged = " ";
|
||||||
|
format-warning = "{icon}{capacity}%";
|
||||||
|
format-critical = "{icon}{capacity}% ({time})";
|
||||||
|
tooltip-format = "{capacity}% | {power}W | {time}";
|
||||||
|
format-icons = [
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
" "
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"custom/notification" =
|
||||||
|
let
|
||||||
|
makoctl = "${config.services.mako.package}/bin/makoctl";
|
||||||
|
jq = "${pkgs.jq}/bin/jq";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo ' ' ) || echo ' ' ";
|
||||||
|
format = "{}";
|
||||||
|
on-click = "${makoctl} dismiss -a";
|
||||||
|
interval = 3;
|
||||||
|
};
|
||||||
|
"custom/weather" =
|
||||||
|
let
|
||||||
|
date-format = "%Y-%m-%d";
|
||||||
|
custom-indicator = "{ICON}{temp_C}({FeelsLikeC})";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
format = "{}°";
|
||||||
|
tooltip = true;
|
||||||
|
interval = 900; # Every 15 minutes
|
||||||
|
exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
|
||||||
|
return-type = "json";
|
||||||
|
};
|
||||||
|
tray = {
|
||||||
|
icon-size = 20;
|
||||||
|
show-passive-items = true;
|
||||||
|
spacing = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style =
|
||||||
|
let
|
||||||
|
scheme = config.lib.stylix.scheme.withHashtag;
|
||||||
|
alpha = "0.8";
|
||||||
|
in
|
||||||
|
''
|
||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
font-family: ${config.stylix.fonts.monospace.name};
|
||||||
|
font-size: ${toString config.stylix.fonts.sizes.popups}px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
background: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
window > box {
|
||||||
|
color: ${scheme.base05};
|
||||||
|
background: ${scheme.base00};
|
||||||
|
margin: 5px 5px 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border-top: 1px solid ${scheme.base04};
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
background: alpha(${scheme.base00}, ${alpha});
|
||||||
|
border: 1px solid ${scheme.base0D};
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip label {
|
||||||
|
color: ${scheme.base05};
|
||||||
|
border: none;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces,
|
||||||
|
#window,
|
||||||
|
#mpris,
|
||||||
|
#pulseaudio,
|
||||||
|
#network,
|
||||||
|
#bluetooth,
|
||||||
|
#backlight,
|
||||||
|
#battery,
|
||||||
|
#clock,
|
||||||
|
#custom-notification,
|
||||||
|
#custom-weather,
|
||||||
|
#tray {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 1px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces,
|
||||||
|
#window,
|
||||||
|
#tray,
|
||||||
|
#backlight,
|
||||||
|
#battery,
|
||||||
|
#custom-weather {
|
||||||
|
color: ${scheme.base05};
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
background: transparent;
|
||||||
|
color: ${scheme.base05};
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px 5px;
|
||||||
|
}
|
||||||
|
#workspaces button.persistent {
|
||||||
|
color: ${scheme.base03};
|
||||||
|
}
|
||||||
|
#workspaces button.focused {
|
||||||
|
color: ${scheme.base0D};
|
||||||
|
}
|
||||||
|
#workspaces button.urgent {
|
||||||
|
color: ${scheme.base09};
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpris {
|
||||||
|
color: ${scheme.base04};
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-notification {
|
||||||
|
color: ${scheme.base08};
|
||||||
|
}
|
||||||
|
#pulseaudio {
|
||||||
|
color: ${scheme.base09};
|
||||||
|
}
|
||||||
|
#network {
|
||||||
|
color: ${scheme.base0A};
|
||||||
|
}
|
||||||
|
#bluetooth {
|
||||||
|
color: ${scheme.base0B};
|
||||||
|
}
|
||||||
|
#clock.calendar {
|
||||||
|
color: ${scheme.base0C};
|
||||||
|
}
|
||||||
|
#clock {
|
||||||
|
color: ${scheme.base0D};
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning {
|
||||||
|
color: ${scheme.base09};
|
||||||
|
}
|
||||||
|
#battery.critical {
|
||||||
|
color: ${scheme.base08};
|
||||||
|
}
|
||||||
|
#battery.charging,
|
||||||
|
#battery.plugged {
|
||||||
|
color: ${scheme.base0B};
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
21
system/home/wallpapers/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Catppuccin
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
1
system/home/wallpapers/README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# Wallpapers for personal use
|
BIN
system/home/wallpapers/blake.png
Normal file
After Width: | Height: | Size: 562 KiB |
BIN
system/home/wallpapers/default.jpg
Normal file
After Width: | Height: | Size: 642 KiB |
BIN
system/home/wallpapers/dithered/barn.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
system/home/wallpapers/dithered/lighthouse.png
Normal file
After Width: | Height: | Size: 103 KiB |
BIN
system/home/wallpapers/dithered/marketplace.png
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
system/home/wallpapers/dithered/motorbikes.png
Normal file
After Width: | Height: | Size: 133 KiB |
BIN
system/home/wallpapers/flatppuccin/flatppuccin_4k_macchiato.png
Normal file
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 202 KiB |
BIN
system/home/wallpapers/gradients/bkg1_bkg5.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
system/home/wallpapers/gradients/bkg3_bkg5.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
system/home/wallpapers/gradients/blue_bkg5.png
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
system/home/wallpapers/gradients/blue_green.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
system/home/wallpapers/gradients/cyan_bkg5.png
Normal file
After Width: | Height: | Size: 146 KiB |
BIN
system/home/wallpapers/gradients/flamingo_bkg1.png
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
system/home/wallpapers/gradients/flamingo_bkg5.png
Normal file
After Width: | Height: | Size: 111 KiB |