Compare commits
511 commits
backup_pre
...
main
9
Makefile
|
@ -1,6 +1,11 @@
|
|||
.PHONY: build
|
||||
.PHONY: default build flathub
|
||||
|
||||
HOST := $(shell hostname)
|
||||
|
||||
default: build
|
||||
|
||||
build:
|
||||
nix build .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
||||
nix build --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
|
||||
#+author: Evie Litherland-Smith
|
||||
#+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
|
||||
home-manager config]] to get the full user setup.
|
||||
To set up without cloning the repository (assuming an already running
|
||||
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/
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
241
flake.lock
|
@ -1,15 +1,199 @@
|
|||
{
|
||||
"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": 1696727917,
|
||||
"narHash": "sha256-FVrbPk+NtMra0jtlC5oxyNchbm8FosmvXIatkRbYy1g=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"rev": "dbe1480d99fe80f08df7970e471fac24c05f2ddb",
|
||||
"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": 1663659192,
|
||||
"narHash": "sha256-uJvaYYDMXvoo0fhBZUhN8WBXeJ87SRgof6GEK2efFT0=",
|
||||
"owner": "chriskempson",
|
||||
"repo": "base16-vim",
|
||||
"rev": "3be3cd82cd31acfcab9a41bad853d9c68d30478d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "chriskempson",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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": 1726989464,
|
||||
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-24.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"iosevka-custom": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719045863,
|
||||
"narHash": "sha256-J0RQ2aiAchRxNzl2jlvqFNpFnDW2GZ7QXp53y7fs4GU=",
|
||||
"lastModified": 1730274547,
|
||||
"narHash": "sha256-34sNwbLNuE6l7jsBkBRUMRahoZc63lCsCa+PoZd/8W8=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "db915e9a55cecdedac53a3cdba354dbc281938d9",
|
||||
"revCount": 13,
|
||||
"rev": "49828459e58b6987d2738b74c085cecb963355ab",
|
||||
"revCount": 19,
|
||||
"type": "git",
|
||||
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
|
||||
},
|
||||
|
@ -20,11 +204,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1717602782,
|
||||
"narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=",
|
||||
"lastModified": 1728888510,
|
||||
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e8057b67ebf307f01bdcc8fba94d94f75039d1f6",
|
||||
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -36,11 +220,11 @@
|
|||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1719838683,
|
||||
"narHash": "sha256-Zw9rQjHz1ilNIimEXFeVa1ERNRBF8DoXDhLAZq5B4pE=",
|
||||
"lastModified": 1730883749,
|
||||
"narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d032c1a6dfad4eedec7e35e91986becc699d7d69",
|
||||
"rev": "dba414932936fde69f0606b4f1d87c5bc0003ede",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -52,8 +236,43 @@
|
|||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"iosevka-custom": "iosevka-custom",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
"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",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718122552,
|
||||
"narHash": "sha256-A+dBkSwp8ssHKV/WyXb9uqIYrHBqHvtSedU24Lq9lqw=",
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"rev": "e59d2c1725b237c362e4a62f5722f5b268d566c7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "danth",
|
||||
"ref": "release-24.05",
|
||||
"repo": "stylix",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
149
flake.nix
|
@ -9,128 +9,65 @@
|
|||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-24.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
stylix = {
|
||||
url = "github:danth/stylix/release-24.05";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
home-manager.follows = "home-manager";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
outputs = {
|
||||
nixpkgs,
|
||||
iosevka-custom,
|
||||
...
|
||||
}: let
|
||||
defaultSpecialArgs = {system ? "x86_64-linux", ...}: {
|
||||
iosevkaCustom = {
|
||||
packages = iosevka-custom.outputs.packages.${system};
|
||||
names = iosevka-custom.outputs.names;
|
||||
};
|
||||
};
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
programs.${loginShell}.enable = true;
|
||||
users.users.${userName} = {
|
||||
shell = pkgs.${loginShell};
|
||||
group = "users";
|
||||
isNormalUser = true;
|
||||
description = "Evie Litherland-Smith";
|
||||
extraGroups = ["networkmanager" "wheel" "video" "input" "uinput"];
|
||||
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
|
||||
openssh = {inherit (config.users.users.root.openssh) authorizedKeys;};
|
||||
};
|
||||
})
|
||||
];
|
||||
in {
|
||||
devShells.x86_64-linux.default = let
|
||||
pkgs = import nixpkgs {system = "x86_64-linux";};
|
||||
in
|
||||
pkgs.mkShellNoCC {
|
||||
packages = with pkgs; [nil pre-commit];
|
||||
shellHook = "pre-commit install --install-hooks";
|
||||
};
|
||||
outputs =
|
||||
inputs@{ nixpkgs, ... }:
|
||||
{
|
||||
nixosConfigurations = {
|
||||
## Server
|
||||
Legion = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = defaultSpecialArgs {inherit system;};
|
||||
modules = defaultModules {
|
||||
Legion = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
username = "pixelifytica";
|
||||
hostName = "Legion";
|
||||
userName = "pixelifytica";
|
||||
loginShell = "zsh";
|
||||
};
|
||||
modules = [ ./system/default.nix ];
|
||||
};
|
||||
## Personal
|
||||
Northstar = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = defaultSpecialArgs {inherit system;};
|
||||
modules = defaultModules {
|
||||
hostName = "Northstar";
|
||||
userName = "pixelifytica";
|
||||
loginShell = "zsh";
|
||||
};
|
||||
};
|
||||
Vanguard = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = defaultSpecialArgs {inherit system;};
|
||||
modules = defaultModules {
|
||||
Vanguard = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
username = "pixelifytica";
|
||||
hostName = "Vanguard";
|
||||
userName = "pixelifytica";
|
||||
loginShell = "zsh";
|
||||
};
|
||||
modules = [ ./system/default.nix ];
|
||||
};
|
||||
Northstar = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
username = "pixelifytica";
|
||||
hostName = "Northstar";
|
||||
};
|
||||
modules = [ ./system/default.nix ];
|
||||
};
|
||||
## Work
|
||||
Tone = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = defaultSpecialArgs {inherit system;};
|
||||
modules = defaultModules {
|
||||
Tone = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
username = "elitherl";
|
||||
hostName = "Tone";
|
||||
userName = "elitherl";
|
||||
loginShell = "zsh";
|
||||
};
|
||||
modules = [ ./system/default.nix ];
|
||||
};
|
||||
Scorch = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = defaultSpecialArgs {inherit system;};
|
||||
modules = defaultModules {
|
||||
hostName = "Scorch";
|
||||
userName = "elitherl";
|
||||
loginShell = "zsh";
|
||||
Ronin = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
username = "elitherl";
|
||||
hostName = "Ronin";
|
||||
};
|
||||
modules = [ ./system/default.nix ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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,22 +0,0 @@
|
|||
{...}: {
|
||||
imports = [./caddy.nix];
|
||||
services.gitea = {
|
||||
enable = true;
|
||||
settings = {
|
||||
server = {
|
||||
ROOT_URL = "https://git.xenia.me.uk";
|
||||
DOMAIN = "git.xenia.me.uk";
|
||||
HTTP_ADDR = "127.0.0.1";
|
||||
HTTP_PORT = 3100;
|
||||
DISABLE_SSH = true;
|
||||
};
|
||||
service.DISABLE_REGISTRATION = true;
|
||||
ui = {
|
||||
DEFAULT_THEME = "auto";
|
||||
THEMES = "auto,gitea,arc-greenw,catppuccin-latte-rosewater,catppuccin-latte-flamingo,catppuccin-latte-pink,catppuccin-latte-mauve,catppuccin-latte-red,catppuccin-latte-maroon,catppuccin-latte-peach,catppuccin-latte-yellow,catppuccin-latte-green,catppuccin-latte-teal,catppuccin-latte-sky,catppuccin-latte-sapphire,catppuccin-latte-blue,catppuccin-latte-lavender,catppuccin-frappe-rosewater,catppuccin-frappe-flamingo,catppuccin-frappe-pink,catppuccin-frappe-mauve,catppuccin-frappe-red,catppuccin-frappe-maroon,catppuccin-frappe-peach,catppuccin-frappe-yellow,catppuccin-frappe-green,catppuccin-frappe-teal,catppuccin-frappe-sky,catppuccin-frappe-sapphire,catppuccin-frappe-blue,catppuccin-frappe-lavender,catppuccin-macchiato-rosewater,catppuccin-macchiato-flamingo,catppuccin-macchiato-pink,catppuccin-macchiato-mauve,catppuccin-macchiato-red,catppuccin-macchiato-maroon,catppuccin-macchiato-peach,catppuccin-macchiato-yellow,catppuccin-macchiato-green,catppuccin-macchiato-teal,catppuccin-macchiato-sky,catppuccin-macchiato-sapphire,catppuccin-macchiato-blue,catppuccin-macchiato-lavender,catppuccin-mocha-rosewater,catppuccin-mocha-flamingo,catppuccin-mocha-pink,catppuccin-mocha-mauve,catppuccin-mocha-red,catppuccin-mocha-maroon,catppuccin-mocha-peach,catppuccin-mocha-yellow,catppuccin-mocha-green,catppuccin-mocha-teal,catppuccin-mocha-sky,catppuccin-mocha-sapphire,catppuccin-mocha-blue,catppuccin-mocha-lavender";
|
||||
};
|
||||
};
|
||||
appName = "Gitea";
|
||||
};
|
||||
services.caddy.virtualHosts."git.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:3100";
|
||||
}
|
|
@ -1,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}";
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
{...}: let
|
||||
port = "5232";
|
||||
in {
|
||||
services.radicale = {
|
||||
enable = true;
|
||||
settings = {
|
||||
server = {
|
||||
hosts = ["0.0.0.0:${port}"];
|
||||
};
|
||||
auth = {
|
||||
type = "htpasswd";
|
||||
htpasswd_filename = "/etc/radicale/users";
|
||||
delay = 1;
|
||||
};
|
||||
};
|
||||
# rights = {};
|
||||
};
|
||||
services.caddy.virtualHosts."cal.xenia.me.uk".extraConfig = ''
|
||||
reverse_proxy http://localhost:${port}
|
||||
'';
|
||||
}
|
26
system/Legion.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ username, ... }:
|
||||
{
|
||||
imports = [
|
||||
./services/adguardhome.nix
|
||||
./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
|
||||
./services/xandikos.nix
|
||||
];
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
home-manager.users.${username} = {
|
||||
home.stateVersion = "23.05";
|
||||
};
|
||||
system.stateVersion = "23.05";
|
||||
users.mutableUsers = false;
|
||||
hardware.bluetooth.enable = true;
|
||||
}
|
9
system/Northstar.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ username, ... }:
|
||||
{
|
||||
imports = [ ./laptop.nix ];
|
||||
home-manager.users.${username} = {
|
||||
home.stateVersion = "23.05";
|
||||
wayland.windowManager.hyprland.settings.monitor = [ "eDP-1,preferred,auto,1.25" ];
|
||||
};
|
||||
system.stateVersion = "23.05";
|
||||
}
|
31
system/Ronin.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ pkgs, username, ... }:
|
||||
{
|
||||
imports = [
|
||||
./laptop.nix
|
||||
./work.nix
|
||||
];
|
||||
home-manager.users.${username} = {
|
||||
home.stateVersion = "23.05";
|
||||
wayland.windowManager.hyprland.settings.monitor = [
|
||||
"eDP-1,preferred,auto,1.25"
|
||||
"desc:Dell Inc. DELL P3223QE CCG8YN3,preferred,auto-left,1.5"
|
||||
];
|
||||
};
|
||||
boot.initrd = {
|
||||
secrets = {
|
||||
"/crypto_keyfile.bin" = null;
|
||||
};
|
||||
luks.devices."luks-761eeb11-3091-4142-9232-4fb33165eccd" = {
|
||||
device = "/dev/disk/by-uuid/761eeb11-3091-4142-9232-4fb33165eccd";
|
||||
keyFile = "/crypto_keyfile.bin";
|
||||
};
|
||||
};
|
||||
system.stateVersion = "23.05";
|
||||
environment = {
|
||||
etc."ppp/options".text = ''
|
||||
ipcp-accept-remote
|
||||
'';
|
||||
systemPackages = with pkgs; [ openfortivpn ];
|
||||
};
|
||||
services.hardware.bolt.enable = true;
|
||||
}
|
36
system/Tone.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{ pkgs, username, ... }:
|
||||
{
|
||||
imports = [
|
||||
./desktop.nix
|
||||
./work.nix
|
||||
];
|
||||
home-manager.users.${username} = {
|
||||
home.stateVersion = "23.05";
|
||||
wayland.windowManager.hyprland.settings.monitor = [
|
||||
"desc:Dell Inc. DELL P3223QE CCG8YN3,preferred,auto,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";
|
||||
};
|
||||
};
|
||||
};
|
||||
system.stateVersion = "23.05";
|
||||
environment = {
|
||||
etc."ppp/options".text = ''
|
||||
ipcp-accept-remote
|
||||
'';
|
||||
systemPackages = with pkgs; [
|
||||
openfortivpn
|
||||
samba
|
||||
];
|
||||
};
|
||||
services.ollama.enable = true;
|
||||
}
|
65
system/Vanguard.nix
Normal file
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./desktop.nix
|
||||
./steam.nix
|
||||
];
|
||||
home-manager.users.${username} = {
|
||||
home = {
|
||||
stateVersion = "23.05";
|
||||
packages = with pkgs; [
|
||||
helvum
|
||||
prusa-slicer
|
||||
blender
|
||||
freecad
|
||||
openscad
|
||||
kicad-small
|
||||
wineWowPackages.waylandFull
|
||||
winetricks
|
||||
lutris
|
||||
cartridges
|
||||
prismlauncher
|
||||
];
|
||||
};
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
wlrobs
|
||||
obs-vkcapture
|
||||
obs-pipewire-audio-capture
|
||||
input-overlay
|
||||
];
|
||||
};
|
||||
wayland.windowManager.hyprland.settings.monitor = [
|
||||
"desc:Acer Technologies ED270R TJMEE0043W01,1920x1080@144,0x140,1.0,vrr,2"
|
||||
"desc:Microstep MSI G27CQ4 E2,2560x1440@144,1920x0,1.25,vrr,2"
|
||||
];
|
||||
};
|
||||
boot = {
|
||||
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||
extraModprobeConfig = ''
|
||||
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
||||
'';
|
||||
};
|
||||
hardware = {
|
||||
amdgpu = {
|
||||
initrd.enable = true;
|
||||
opencl.enable = true;
|
||||
};
|
||||
opengl = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
};
|
||||
services.ollama = {
|
||||
enable = true;
|
||||
acceleration = "rocm";
|
||||
};
|
||||
system.stateVersion = "23.05";
|
||||
}
|
228
system/default.nix
Normal file
|
@ -0,0 +1,228 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
username,
|
||||
hostName,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.stylix.nixosModules.stylix
|
||||
./${hostName}.nix
|
||||
./hardware-configuration/${hostName}.nix
|
||||
];
|
||||
nix = {
|
||||
enable = true;
|
||||
package = pkgs.nixVersions.latest;
|
||||
settings = {
|
||||
cores = 0;
|
||||
max-jobs = "auto";
|
||||
trusted-users = [
|
||||
"root"
|
||||
username
|
||||
];
|
||||
experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
auto-optimise-store = true;
|
||||
substituters = [ "https://nix.xenia.me.uk" ];
|
||||
trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ];
|
||||
};
|
||||
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||
channel.enable = true;
|
||||
gc = {
|
||||
automatic = true;
|
||||
options = "--delete-older-than 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)}
|
||||
'';
|
||||
};
|
||||
system.autoUpgrade = {
|
||||
enable = true;
|
||||
persistent = true;
|
||||
allowReboot = false;
|
||||
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
||||
dates = "02:00";
|
||||
randomizedDelaySec = "5min";
|
||||
fixedRandomDelay = true;
|
||||
flags = [
|
||||
"--option"
|
||||
"extra-binary-caches"
|
||||
"https://nix.xenia.me.uk"
|
||||
];
|
||||
};
|
||||
systemd.services = lib.mkIf config.system.autoUpgrade.enable {
|
||||
nixos-upgrade.serviceConfig = {
|
||||
CPUQuota = "75%";
|
||||
CPUWeight = 20;
|
||||
IOWeight = 20;
|
||||
};
|
||||
};
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
networking = {
|
||||
inherit hostName;
|
||||
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;
|
||||
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
|
||||
p7zip
|
||||
curl
|
||||
wget
|
||||
dig
|
||||
wireguard-tools
|
||||
quickemu
|
||||
distrobox
|
||||
];
|
||||
localBinInPath = true;
|
||||
};
|
||||
programs = {
|
||||
command-not-found.enable = false;
|
||||
ssh.startAgent = true;
|
||||
nano = {
|
||||
enable = true;
|
||||
syntaxHighlight = true;
|
||||
nanorc = ''
|
||||
set nowrap
|
||||
set tabstospaces
|
||||
set tabsize 2
|
||||
'';
|
||||
};
|
||||
};
|
||||
services = {
|
||||
upower.enable = true;
|
||||
power-profiles-daemon.enable = true;
|
||||
system76-scheduler = {
|
||||
enable = true;
|
||||
useStockConfig = true;
|
||||
};
|
||||
};
|
||||
security.rtkit.enable = true;
|
||||
virtualisation.podman.enable = true;
|
||||
location = {
|
||||
latitude = 51.7;
|
||||
longitude = -1.2;
|
||||
provider = "manual";
|
||||
};
|
||||
time.timeZone = "Europe/London";
|
||||
i18n.defaultLocale = "en_GB.UTF-8";
|
||||
console.useXkbConfig = true;
|
||||
stylix = {
|
||||
enable = true;
|
||||
image = ./home/desktop/wallpapers/tropic_island_day.jpg;
|
||||
base16Scheme = ./one-light.yaml; # Base24 scheme
|
||||
polarity = "light";
|
||||
opacity.popups = 0.8;
|
||||
cursor = {
|
||||
package = pkgs.volantes-cursors;
|
||||
name = "volantes_cursors";
|
||||
size = 32;
|
||||
};
|
||||
fonts = {
|
||||
serif = {
|
||||
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-etoile;
|
||||
name = inputs.iosevka-custom.outputs.names.iosevka-custom-etoile;
|
||||
};
|
||||
sansSerif = {
|
||||
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-aile;
|
||||
name = inputs.iosevka-custom.outputs.names.iosevka-custom-aile;
|
||||
};
|
||||
monospace = {
|
||||
package = pkgs.nerdfonts.override { fonts = [ "Iosevka" ]; };
|
||||
name = "Iosevka Nerd Font";
|
||||
};
|
||||
sizes = {
|
||||
applications = 12;
|
||||
desktop = 14;
|
||||
popups = 16;
|
||||
terminal = 12;
|
||||
};
|
||||
};
|
||||
};
|
||||
fonts.packages = with pkgs; [
|
||||
dejavu_fonts # General compatibility
|
||||
liberation_ttf # Documents
|
||||
lmodern # LaTeX
|
||||
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
||||
];
|
||||
}
|
99
system/desktop.nix
Normal file
|
@ -0,0 +1,99 @@
|
|||
{ pkgs, username, ... }:
|
||||
{
|
||||
home-manager.users.${username}.imports = [ ./home/desktop/default.nix ];
|
||||
nixpkgs.config.chromium.commandLineArgs = "--password-store='gnome-libsecret' --enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||||
hardware.bluetooth.enable = true;
|
||||
environment = {
|
||||
sessionVariables = {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
QT_QPA_PLATFORM = "wayland";
|
||||
};
|
||||
systemPackages = with pkgs; [
|
||||
libsecret
|
||||
libnotify
|
||||
xdg-utils
|
||||
hunspell
|
||||
hunspellDicts.en_GB-large
|
||||
gnome.nautilus
|
||||
];
|
||||
};
|
||||
security = {
|
||||
polkit.enable = true;
|
||||
pam.loginLimits = [
|
||||
{
|
||||
domain = "@users";
|
||||
item = "rtprio";
|
||||
type = "-";
|
||||
value = 1;
|
||||
}
|
||||
];
|
||||
};
|
||||
programs = {
|
||||
dconf.enable = true;
|
||||
noisetorch.enable = true;
|
||||
seahorse.enable = true;
|
||||
file-roller.enable = true;
|
||||
kdeconnect.enable = true;
|
||||
hyprland.enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
gtk.iconCache.enable = true;
|
||||
qt = {
|
||||
enable = true;
|
||||
style = "adwaita";
|
||||
platformTheme = "gnome";
|
||||
};
|
||||
services = {
|
||||
gnome.gnome-keyring.enable = true;
|
||||
flatpak.enable = true;
|
||||
printing.enable = true;
|
||||
tumbler.enable = true;
|
||||
udisks2.enable = true;
|
||||
gnome.sushi.enable = true;
|
||||
gvfs = {
|
||||
enable = true;
|
||||
package = pkgs.gnome3.gvfs;
|
||||
};
|
||||
kanata = {
|
||||
enable = true;
|
||||
keyboards.main = {
|
||||
config = builtins.readFile ./kanata.kbd;
|
||||
extraDefCfg = "process-unmapped-keys yes";
|
||||
};
|
||||
};
|
||||
pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
};
|
||||
greetd = {
|
||||
enable = true;
|
||||
settings =
|
||||
let
|
||||
default_session.command = "Hyprland";
|
||||
in
|
||||
{
|
||||
inherit default_session;
|
||||
initial_session = {
|
||||
inherit (default_session) command;
|
||||
user = username;
|
||||
};
|
||||
};
|
||||
};
|
||||
xserver = {
|
||||
enable = true;
|
||||
xkb.layout = "gb";
|
||||
};
|
||||
};
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
config.common.default = "*"; # TODO change for xdg-desktop-portal > 1.17 changes
|
||||
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||
};
|
||||
}
|
|
@ -1,32 +1,44 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# 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 = [ "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.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/b9d4ba04-a867-4ca6-88f9-79dc6a982e94";
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/b9d4ba04-a867-4ca6-88f9-79dc6a982e94";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/8F05-4C3A";
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/8F05-4C3A";
|
||||
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
|
||||
# (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’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# 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 = [ "nvme" "xhci_pci" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"xhci_pci"
|
||||
"rtsx_pci_sdmmc"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/84b28760-3643-4ad8-9ff6-ff78b57067f8";
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/84b28760-3643-4ad8-9ff6-ff78b57067f8";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-d1062931-ee58-4848-adf9-09452daeb6eb".device = "/dev/disk/by-uuid/d1062931-ee58-4848-adf9-09452daeb6eb";
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/ABE3-88E7";
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/ABE3-88E7";
|
||||
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
|
||||
# (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’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# 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 = [ "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.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/44c11386-0af8-4954-93bc-963a8e071672";
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/44c11386-0af8-4954-93bc-963a8e071672";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-bf1eab3a-6d92-430d-a282-8dd4c9efe2c7".device = "/dev/disk/by-uuid/bf1eab3a-6d92-430d-a282-8dd4c9efe2c7";
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/85D5-B6EC";
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/85D5-B6EC";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/e65e5e4d-2084-4e6b-9255-3b36cba1529f"; }
|
||||
];
|
||||
swapDevices = [ { device = "/dev/disk/by-uuid/e65e5e4d-2084-4e6b-9255-3b36cba1529f"; } ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (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’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
boot.initrd.availableKernelModules =
|
||||
[ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
||||
boot.initrd.availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
@ -17,16 +28,14 @@
|
|||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-08822b9c-e9d6-424c-bc75-373f8667526d".device =
|
||||
"/dev/disk/by-uuid/08822b9c-e9d6-424c-bc75-373f8667526d";
|
||||
boot.initrd.luks.devices."luks-08822b9c-e9d6-424c-bc75-373f8667526d".device = "/dev/disk/by-uuid/08822b9c-e9d6-424c-bc75-373f8667526d";
|
||||
|
||||
fileSystems."/boot/efi" = {
|
||||
device = "/dev/disk/by-uuid/6009-89FC";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[{ device = "/dev/disk/by-uuid/ff9627a7-820c-4628-a040-2b665688b893"; }];
|
||||
swapDevices = [ { device = "/dev/disk/by-uuid/ff9627a7-820c-4628-a040-2b665688b893"; } ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
|
@ -37,6 +46,5 @@
|
|||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||
hardware.cpu.intel.updateMicrocode =
|
||||
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
|
@ -1,39 +1,51 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# 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 = [ "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.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/379a999a-0753-4cbf-b868-e275902f0f73";
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/379a999a-0753-4cbf-b868-e275902f0f73";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-0d50df5f-9456-4296-9156-f5b818e11552".device = "/dev/disk/by-uuid/0d50df5f-9456-4296-9156-f5b818e11552";
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/3297-A70D";
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/3297-A70D";
|
||||
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";
|
||||
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"; }
|
||||
];
|
||||
swapDevices = [ { device = "/dev/disk/by-uuid/26a8690a-70f9-4701-b224-b212f76a7035"; } ];
|
||||
|
||||
# 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
|
9
system/home/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./shell/default.nix
|
||||
./scripts/default.nix
|
||||
./password-store/default.nix
|
||||
];
|
||||
programs.home-manager.enable = true;
|
||||
}
|
297
system/home/desktop/browser/bookmarks.json
Normal file
|
@ -0,0 +1,297 @@
|
|||
[
|
||||
{
|
||||
"name": "Spotify",
|
||||
"url": "https://open.spotify.com",
|
||||
"tags": ["Music", "Streaming"]
|
||||
},
|
||||
{
|
||||
"name": "ABRP",
|
||||
"url": "https://abetterrouteplanner.com/",
|
||||
"tags": ["Travel"]
|
||||
},
|
||||
{
|
||||
"name": "Patreon",
|
||||
"url": "https://www.patreon.com/home",
|
||||
"tags": ["Personal"]
|
||||
},
|
||||
{
|
||||
"name": "NHS App",
|
||||
"url": "https://www.nhsapp.service.nhs.uk/login",
|
||||
"tags": ["Personal", "NHS"]
|
||||
},
|
||||
{
|
||||
"name": "Krystal Hosting",
|
||||
"url": "https://krystal.io",
|
||||
"tags": ["Server", "Hosting"]
|
||||
},
|
||||
{
|
||||
"name": "Home Assistant",
|
||||
"url": "https://home.xenia.me.uk",
|
||||
"tags": ["Home", "Automation", "Personal"]
|
||||
},
|
||||
{
|
||||
"name": "Forgejo",
|
||||
"url": "https://git.xenia.me.uk",
|
||||
"tags": ["Software", "Git", "Personal"]
|
||||
},
|
||||
{
|
||||
"name": "GitHub",
|
||||
"url": "https://github.com",
|
||||
"tags": ["Software", "Git"]
|
||||
},
|
||||
{
|
||||
"name": "CCFE GitLab",
|
||||
"url": "https://git.ccfe.ac.uk",
|
||||
"tags": ["Software", "Git", "Work"]
|
||||
},
|
||||
{
|
||||
"name": "NixOS Manual",
|
||||
"url": "https://nixos.org/manual/nixpkgs/stable/",
|
||||
"tags": ["Software", "Documentation", "Ni"]
|
||||
},
|
||||
{
|
||||
"name": "Home Manager",
|
||||
"url": "https://nix-community.github.io/home-manager/options.xhtml",
|
||||
"tags": ["Software", "Documentation", "Nix"]
|
||||
},
|
||||
{
|
||||
"name": "Plasma Manager",
|
||||
"url": "https://nix-community.github.io/plasma-manager/",
|
||||
"tags": ["Software", "Documentation", "Nix", "KDE", "Plasma"]
|
||||
},
|
||||
{
|
||||
"name": "NixOS and Flakes",
|
||||
"url": "https://nixos-and-flakes.thiscute.world/",
|
||||
"tags": ["Software", "Documentation", "Nix"]
|
||||
},
|
||||
{
|
||||
"name": "KDE Plasma Desktop Scripting",
|
||||
"url": "https://develop.kde.org/docs/plasma/scripting/",
|
||||
"tags": ["Software", "Documentation", "KDE", "Plasma"]
|
||||
},
|
||||
{
|
||||
"name": "Awesome Emacs",
|
||||
"url": "https://github.com/emacs-tw/awesome-emacs",
|
||||
"tags": ["Software", "Repositories"]
|
||||
},
|
||||
{
|
||||
"name": "Awesome Wayland",
|
||||
"url": "https://github.com/natpen/awesome-wayland",
|
||||
"tags": ["Software", "Repositories"]
|
||||
},
|
||||
{
|
||||
"name": "Awesome Selfhosted",
|
||||
"url": "https://github.com/awesome-selfhosted/awesome-selfhosted",
|
||||
"tags": ["Software", "Repositories"]
|
||||
},
|
||||
{
|
||||
"name": "Awesome reMarkable",
|
||||
"url": "https://github.com/reHackable/awesome-reMarkable",
|
||||
"tags": ["Software", "Repositories"]
|
||||
},
|
||||
{
|
||||
"name": "NixOS Wiki",
|
||||
"url": "https://nixos.wiki",
|
||||
"tags": ["Wiki"]
|
||||
},
|
||||
{
|
||||
"name": "Arch Wiki",
|
||||
"url": "https://wiki.archlinux.org",
|
||||
"tags": ["Wiki"]
|
||||
},
|
||||
{
|
||||
"name": "Filament Guide",
|
||||
"url": "https://help.prusa3d.com/materials",
|
||||
"tags": ["3D Printing", "Filament"]
|
||||
},
|
||||
{
|
||||
"name": "Thingiverse",
|
||||
"url": "https://www.thingiverse.com/",
|
||||
"tags": ["3D Printing"]
|
||||
},
|
||||
{
|
||||
"name": "Printables",
|
||||
"url": "https://www.printables.com/",
|
||||
"tags": ["3D Printing"]
|
||||
},
|
||||
{
|
||||
"name": "MyMiniFactory",
|
||||
"url": "https://www.myminifactory.com",
|
||||
"tags": ["3D Printing"]
|
||||
},
|
||||
{
|
||||
"name": "pinshape",
|
||||
"url": "https://www.pinshape.com",
|
||||
"tags": ["3D Printing"]
|
||||
},
|
||||
{
|
||||
"name": "YouMagine",
|
||||
"url": "https://www.youmagine.com",
|
||||
"tags": ["3D Printing"]
|
||||
},
|
||||
{
|
||||
"name": "SHAPEWAYS",
|
||||
"url": "https://www.shapeways.com",
|
||||
"tags": ["3D Printing"]
|
||||
},
|
||||
{
|
||||
"name": "Gambody",
|
||||
"url": "https://www.gambody.com",
|
||||
"tags": ["3D Printing"]
|
||||
},
|
||||
{
|
||||
"name": "TouchTerrain",
|
||||
"url": "https://touchterrain.geol.iastate.edu/",
|
||||
"tags": ["3D Printing", "Modelling"]
|
||||
},
|
||||
{
|
||||
"name": "Touch Mapper",
|
||||
"url": "https://touch-mapper.org/en/",
|
||||
"tags": ["3D Printing", "Modelling"]
|
||||
},
|
||||
{
|
||||
"name": "Homepage",
|
||||
"url": "https://wiki.jetdata.eu/open/index.php?title=Main_Page",
|
||||
"tags": ["Wiki", "OpenWiki"]
|
||||
},
|
||||
{
|
||||
"name": "Diagnostic Coordinator",
|
||||
"url": "https://wiki.jetdata.eu/open/index.php?title=Diagnostic_Coordinator_Wiki",
|
||||
"tags": ["Wiki", "OpenWiki"]
|
||||
},
|
||||
{
|
||||
"name": "Spectroscopy Group",
|
||||
"url": "https://wiki.jetdata.eu/open/index.php?title=Spectroscopy_Group:index",
|
||||
"tags": ["Wiki", "OpenWiki"]
|
||||
},
|
||||
{
|
||||
"name": "KS5 Wiki",
|
||||
"url": "https://wiki.jetdata.eu/open/index.php?title=CXS:Topic3",
|
||||
"tags": ["Wiki", "OpenWiki"]
|
||||
},
|
||||
{
|
||||
"name": "KT3 Journals",
|
||||
"url": "https://wiki.jetdata.eu/open/index.php?title=KT3_Journals",
|
||||
"tags": ["Wiki", "OpenWiki"]
|
||||
},
|
||||
{
|
||||
"name": "Nucleus",
|
||||
"url": "https://nucleus.ukaea.uk/",
|
||||
"tags": ["Work"]
|
||||
},
|
||||
{
|
||||
"name": "Ivanti",
|
||||
"url": "https://ukaea-ism.ivanticloud.com/Modules/SelfService/?NoDefaultProvider=True#home",
|
||||
"tags": ["Work"]
|
||||
},
|
||||
{
|
||||
"name": "U4BW",
|
||||
"url": "https://ubw.unit4cloud.com/uk_aea_prod_web/Login/Login.aspx",
|
||||
"tags": ["Work"]
|
||||
},
|
||||
{
|
||||
"name": "APS",
|
||||
"url": "https://appraisal.org.ukaea.uk/",
|
||||
"tags": ["Work"]
|
||||
},
|
||||
{
|
||||
"name": "Robin",
|
||||
"url": "https://dashboard.robinpowered.com/",
|
||||
"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": "Physics Summary",
|
||||
"url": "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php",
|
||||
"tags": ["Work", "JET"]
|
||||
},
|
||||
{
|
||||
"name": "DVCM Homepage",
|
||||
"url": "https://dvcm.jetdata.eu/",
|
||||
"tags": ["Work", "JET"]
|
||||
},
|
||||
{
|
||||
"name": "JET Data Services",
|
||||
"url": "https://data.jet.uk",
|
||||
"tags": ["Work", "JET", "Data"]
|
||||
},
|
||||
{
|
||||
"name": "JET Dashboard",
|
||||
"url": "https://data.jet.uk/dashboard/sessions/",
|
||||
"tags": ["Work", "JET", "Data"]
|
||||
},
|
||||
{
|
||||
"name": "PPF Query",
|
||||
"url": "https://data.jet.uk/ppf/browse/ppfquery",
|
||||
"tags": ["Work", "JET", "Data"]
|
||||
},
|
||||
{
|
||||
"name": "ReqCo",
|
||||
"url": "https://data.jet.uk/reqco/myrequests",
|
||||
"tags": ["Work", "JET", "Data"]
|
||||
},
|
||||
{
|
||||
"name": "Countdown Mimic",
|
||||
"url": "http://webmimic.jet.uk/mc/codas/countdown",
|
||||
"tags": ["Work", "JET", "Mimic"]
|
||||
},
|
||||
{
|
||||
"name": "KS5 Mimic",
|
||||
"url": "http://webmimic.jet.uk/DG/codas/ks5.mim.html",
|
||||
"tags": ["Work", "JET", "Mimic"]
|
||||
},
|
||||
{
|
||||
"name": "KT3 Mimic",
|
||||
"url": "http://webmimic.jet.uk/DG/codas/kt3spec.mim.html",
|
||||
"tags": ["Work", "JET", "Mimic"]
|
||||
},
|
||||
{
|
||||
"name": "MAST-U Users Page",
|
||||
"url": "https://users.mastu.ukaea.uk/home",
|
||||
"tags": ["Work", "MAST-U"]
|
||||
},
|
||||
{
|
||||
"name": "MAST-U Diagnostic Handbook",
|
||||
"url": "https://intranet.ccfe.ac.uk/mastu-handbook",
|
||||
"tags": ["Work", "MAST-U"]
|
||||
},
|
||||
{
|
||||
"name": "MAST-U Data Access and Tools",
|
||||
"url": "https://users.mastu.ukaea.uk/data-access-and-tools",
|
||||
"tags": ["Work", "MAST-U"]
|
||||
},
|
||||
{
|
||||
"name": "Outlook Calendar",
|
||||
"url": "https://outlook.office.com/calendar/view/workweek",
|
||||
"tags": ["Work", "Office"]
|
||||
},
|
||||
{
|
||||
"name": "LGBTQIA+ Network Email",
|
||||
"url": "https://outlook.office.com/mail/ContactUs@lgbtqi.ukaea.uk/",
|
||||
"tags": ["Work", "Office", "Network", "LGBTQIA+"]
|
||||
},
|
||||
{
|
||||
"name": "OneDrive",
|
||||
"url": "https://ukaeauk-my.sharepoint.com/",
|
||||
"tags": ["Work", "Office"]
|
||||
},
|
||||
{
|
||||
"name": "PSFO Sharepoint",
|
||||
"url": "https://ukaeauk.sharepoint.com/sites/Plasma",
|
||||
"tags": ["Work", "Office"]
|
||||
},
|
||||
{
|
||||
"name": "Culham Canteen Menus",
|
||||
"url": "https://nucleus.ukaea.uk/Interact/Pages/Section/Default.aspx?section=10112",
|
||||
"tags": ["Work", "Canteen", "Menu"]
|
||||
}
|
||||
]
|
67
system/home/desktop/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")
|
4
system/home/desktop/browser/default.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [ ./firefox.nix ];
|
||||
}
|
221
system/home/desktop/browser/firefox.nix
Normal file
|
@ -0,0 +1,221 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
stylix.targets.firefox.enable = false;
|
||||
programs = {
|
||||
browserpass = {
|
||||
enable = true;
|
||||
browsers = [ "firefox" ];
|
||||
};
|
||||
firefox = {
|
||||
enable = true;
|
||||
policies = {
|
||||
BlockAboutProfiles = true;
|
||||
Cookies = {
|
||||
Behavior = "reject-tracker-and-partition-foreign";
|
||||
BehaviorPrivateBrowsing = "reject";
|
||||
Locked = true;
|
||||
};
|
||||
DefaultDownloadDirectory = config.xdg.userDirs.download;
|
||||
DisableAppUpdate = true;
|
||||
DisableFirefoxAccounts = true;
|
||||
DisableFirefoxScreenshots = true;
|
||||
DisableFirefoxStudies = true;
|
||||
DisableFormHistory = true;
|
||||
DisablePocket = true;
|
||||
DisableProfileImport = true;
|
||||
DisableSetDesktopBackground = true;
|
||||
DisableSystemAddonUpdate = true;
|
||||
DisableTelemetry = true;
|
||||
DisplayMenuBar = "default-off";
|
||||
DontCheckDefaultBrowser = true;
|
||||
EnableTrackingProtection = {
|
||||
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.user = {
|
||||
isDefault = true;
|
||||
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";
|
||||
}
|
||||
{
|
||||
title = "Hyprland Wiki";
|
||||
url = "https://wiki.hyprland.org";
|
||||
}
|
||||
];
|
||||
};
|
||||
search = rec {
|
||||
default = "DuckDuckGo";
|
||||
privateDefault = default;
|
||||
force = true;
|
||||
order = [
|
||||
"DuckDuckGo"
|
||||
"Atlas SearXNG"
|
||||
];
|
||||
engines = {
|
||||
"Atlas SearXNG" = {
|
||||
urls = [ { template = "https://search.atlas.engineer/searxng/search?q={searchTerms}"; } ];
|
||||
definedAliases = [ "@atlas" ];
|
||||
};
|
||||
"NixOS Wiki" = {
|
||||
urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = [
|
||||
"@nix"
|
||||
"@nixos"
|
||||
"@nixoswiki"
|
||||
];
|
||||
};
|
||||
"Arch Wiki" = {
|
||||
urls = [ { template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; } ];
|
||||
definedAliases = [
|
||||
"@aw"
|
||||
"@arch"
|
||||
"@archwiki"
|
||||
];
|
||||
};
|
||||
"GitHub" = {
|
||||
urls = [ { template = "https://github.com/search?q={searchTerms}"; } ];
|
||||
definedAliases = [
|
||||
"@gh"
|
||||
"@git"
|
||||
"@github"
|
||||
];
|
||||
};
|
||||
"FlatHub" = {
|
||||
url = [ { template = "https://flathub.org/apps/search?q={searchTerms}"; } ];
|
||||
definedAliases = [
|
||||
"@flat"
|
||||
"@fthub"
|
||||
"@flathub"
|
||||
];
|
||||
};
|
||||
"NixOS Packages" = {
|
||||
urls = [
|
||||
{
|
||||
template = "http://search.nixos.org/packages?channel=unstable&size=50&sort=relevance&type=packages&query={searchTerms}";
|
||||
}
|
||||
];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = [ "@nixpkgs" ];
|
||||
};
|
||||
"PyPI packages" = {
|
||||
urls = [ { template = "https://pypi.org/search/?q={searchTerms}"; } ];
|
||||
definedAliases = [ "@pypi" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
10
system/home/desktop/browser/librewolf.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs = {
|
||||
browserpass.browsers = [ "librewolf" ];
|
||||
librewolf = {
|
||||
enable = true;
|
||||
settings = { };
|
||||
};
|
||||
};
|
||||
}
|
67
system/home/desktop/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.withHashtag;
|
||||
in
|
||||
''
|
||||
;; Import custom configuration
|
||||
(nyxt::load-lisp "${./config.lisp}")
|
||||
;; Define custom theme
|
||||
(define-configuration browser
|
||||
((theme (make-instance 'theme:theme
|
||||
:dark-p nil
|
||||
:font-family "${fonts.sansSerif.name}"
|
||||
:monospace-font-family "${fonts.monospace.name}"
|
||||
:background-color "${scheme.base00}"
|
||||
:on-background-color "${scheme.base05}"
|
||||
:primary-color "${scheme.base02}"
|
||||
:on-primary-color "${scheme.base05}"
|
||||
:secondary-color "${scheme.base03}"
|
||||
:on-secondary-color "${scheme.base05}"
|
||||
:accent-color "${scheme.base0E}"
|
||||
:on-accent-color "${scheme.base01}"
|
||||
:action-color "${scheme.cyan}"
|
||||
:on-action-color "${scheme.base01}"
|
||||
:success-color "${scheme.green}"
|
||||
:on-success-color "${scheme.base01}"
|
||||
:highlight-color "${scheme.magenta}"
|
||||
:on-highlight-color "${scheme.base01}"
|
||||
:warning-color "${scheme.yellow}"
|
||||
:on-warning-color "${scheme.base01}"
|
||||
:codeblock-color "${scheme.base02}"
|
||||
:on-codeblock-color "${scheme.base05}"))))
|
||||
'';
|
||||
};
|
||||
dataFile."nyxt/bookmarks.lisp".text =
|
||||
let
|
||||
# Make a string of lisp-style list of strings, from nix-style
|
||||
# list
|
||||
convertTags = tags: "(" + (builtins.foldl' (x: y: x + " \"" + y + "\"") "" tags) + " )";
|
||||
# Take bookmarks as returned from JSON file and convert to NYXT
|
||||
# expected format
|
||||
convertBookmark =
|
||||
{
|
||||
name,
|
||||
tags,
|
||||
url,
|
||||
}:
|
||||
"(:url \"${url}\" :title \"${name}\" :tags ${convertTags tags})\n";
|
||||
in
|
||||
(
|
||||
# Fold all entries in bookmarks.json into single string of NYXT
|
||||
# format bookmarks, each entry on a new line and with 2 space
|
||||
# indentation, just for visual clarity if reading the outputted
|
||||
# file
|
||||
"(\n"
|
||||
+ (builtins.foldl' (x: y: x + " " + convertBookmark y) "" (
|
||||
builtins.fromJSON (builtins.readFile ./bookmarks.json)
|
||||
))
|
||||
+ ")"
|
||||
);
|
||||
};
|
||||
}
|
73
system/home/desktop/calendar/default.nix
Normal file
|
@ -0,0 +1,73 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
programs = {
|
||||
vdirsyncer.enable = true;
|
||||
khal = {
|
||||
enable = true;
|
||||
locale = {
|
||||
timeformat = "%H:%M";
|
||||
dateformat = "%Y-%m-%d";
|
||||
longdateformat = "%Y-%m-%d %a";
|
||||
datetimeformat = "%Y-%m-%d %H:%M";
|
||||
longdatetimeformat = "%Y-%m-%d %H:%M";
|
||||
};
|
||||
};
|
||||
};
|
||||
services.vdirsyncer = {
|
||||
inherit (config.programs.vdirsyncer) enable package;
|
||||
frequency = "*:0/30"; # Every 30 minutes
|
||||
};
|
||||
accounts.calendar = {
|
||||
basePath = "Calendar";
|
||||
accounts = {
|
||||
main =
|
||||
let
|
||||
url = "dav.xenia.me.uk";
|
||||
in
|
||||
{
|
||||
primary = true;
|
||||
primaryCollection = "personal";
|
||||
local = {
|
||||
type = "filesystem";
|
||||
fileExt = ".ics";
|
||||
};
|
||||
remote =
|
||||
let
|
||||
userName = "pixelifytica";
|
||||
in
|
||||
{
|
||||
inherit userName;
|
||||
url = "https://${url}";
|
||||
type = "caldav";
|
||||
passwordCommand = [
|
||||
"${pkgs.libsecret}/bin/secret-tool"
|
||||
"lookup"
|
||||
"url"
|
||||
"${url}"
|
||||
"user"
|
||||
"${userName}"
|
||||
];
|
||||
};
|
||||
vdirsyncer = {
|
||||
inherit (config.programs.vdirsyncer) enable;
|
||||
auth = "basic";
|
||||
collections = [
|
||||
"personal"
|
||||
"work"
|
||||
"other"
|
||||
];
|
||||
metadata = [ "displayname" ];
|
||||
timeRange = {
|
||||
start = "datetime.now() - timedelta(days=365)";
|
||||
end = "datetime.now() + timedelta(days=365)";
|
||||
};
|
||||
};
|
||||
khal = {
|
||||
inherit (config.programs.khal) enable;
|
||||
type = "discover";
|
||||
addresses = with config.accounts.email.accounts.proton; [ address ] ++ aliases;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
94
system/home/desktop/default.nix
Normal file
|
@ -0,0 +1,94 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./hyprland.nix
|
||||
./email/default.nix
|
||||
./calendar/default.nix
|
||||
./terminal/default.nix
|
||||
./emacs/default.nix
|
||||
./browser/default.nix
|
||||
];
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
wl-clipboard
|
||||
libreoffice-fresh
|
||||
evince
|
||||
image-roll
|
||||
clapper
|
||||
g4music
|
||||
ffmpeg
|
||||
remmina
|
||||
fractal
|
||||
webcord
|
||||
signal-desktop
|
||||
whatsapp-for-linux
|
||||
teams-for-linux
|
||||
twinkle
|
||||
];
|
||||
file.${config.gtk.gtk2.configLocation}.force = true;
|
||||
};
|
||||
services = {
|
||||
syncthing.enable = true;
|
||||
gammastep = {
|
||||
inherit (osConfig.location) latitude longitude provider;
|
||||
enable = true;
|
||||
tray = true;
|
||||
};
|
||||
};
|
||||
gtk = {
|
||||
enable = true;
|
||||
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||
iconTheme = {
|
||||
package = (pkgs.papirus-icon-theme.override { color = "magenta"; });
|
||||
name = "Papirus-Light";
|
||||
};
|
||||
};
|
||||
stylix.targets.gtk.extraCss = with config.lib.stylix.scheme.withHashtag; ''
|
||||
@define-color accent_color ${base0E-hex};
|
||||
@define-color accent_bg_color ${base0E-hex};
|
||||
'';
|
||||
xdg = {
|
||||
mime.enable = true;
|
||||
mimeApps =
|
||||
let
|
||||
defaultApplications = import ./mimeapps.nix;
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
inherit defaultApplications;
|
||||
associations.added = defaultApplications;
|
||||
};
|
||||
userDirs = {
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
extraConfig = {
|
||||
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
|
||||
};
|
||||
};
|
||||
configFile = {
|
||||
# Stop programs from overriding mimeapps
|
||||
"mimeapps.list".force = true;
|
||||
# Ensure GTK config is set
|
||||
"gtk-3.0/gtk.css".force = true;
|
||||
"gtk-3.0/settings.ini".force = true;
|
||||
"gtk-4.0/gtk.css".force = true;
|
||||
"gtk-4.0/settings.ini".force = true;
|
||||
# Autostart some programs
|
||||
"autostart/signal-desktop.desktop".source = "${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
||||
"autostart/com.github.eneshecan.WhatsAppForLinux.desktop".source = "${pkgs.whatsapp-for-linux}/share/applications/com.github.eneshecan.WhatsAppForLinux.desktop";
|
||||
"teams-for-linux/config.json".text = builtins.toJSON {
|
||||
awayOnSystemIdle = true;
|
||||
closeAppOnCross = false;
|
||||
followSystemTheme = true;
|
||||
notificationMethod = "electron";
|
||||
optInTeamsV2 = true;
|
||||
spellCheckerLanguages = [ "en_GB" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
137
system/home/desktop/emacs/default.nix
Normal file
|
@ -0,0 +1,137 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
../../shell/default.nix
|
||||
../../shell/git.nix
|
||||
../../gpg/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
|
||||
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
|
||||
bera
|
||||
;
|
||||
latex-beamer-ukaea.pkgs = [ (callPackage ./texlive/latex-beamer-ukaea/default.nix { }) ];
|
||||
})
|
||||
|
||||
# Development tools
|
||||
## Code screenshots
|
||||
silicon
|
||||
|
||||
## Python Environments
|
||||
poetry
|
||||
|
||||
## Linters
|
||||
shellcheck
|
||||
yamllint
|
||||
ruff
|
||||
|
||||
## Formatters
|
||||
nixfmt-rfc-style
|
||||
shfmt
|
||||
stylua
|
||||
nodePackages.prettier
|
||||
nodePackages.prettier-plugin-toml
|
||||
|
||||
## Language servers
|
||||
nixd
|
||||
lua-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/desktop/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/desktop/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/desktop/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/desktop/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/desktop/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/desktop/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
|
|
@ -0,0 +1,18 @@
|
|||
# UKAEA Beamer Style
|
||||
|
||||
This provides a Beamer theme for the default UKAEA branding. Subbrands
|
||||
(CCFE, RACE, etc.) are not current available, but would not be
|
||||
difficult to add.
|
||||
|
||||
For best results, it is recommended that you install the non-free
|
||||
Latex fonts, as described here:
|
||||
<https://www.tug.org/fonts/getnonfreefonts/>. However you will still
|
||||
get perfectly acceptable results without them.
|
||||
|
||||
The file `ukaea-example.tex` is provided as a starting point for your
|
||||
presentations. Simply rename and modify it as needed. You must either
|
||||
keep your presentation TeX file in the same directory as the `.sty`
|
||||
and image files or install those files on your system. If you wish to
|
||||
do the latter, [follow these
|
||||
instructions](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages#Installing_a_package)
|
||||
starting from step 3.
|
|
@ -0,0 +1,50 @@
|
|||
\usepackage{xcolor}
|
||||
|
||||
\mode<presentation>
|
||||
|
||||
\definecolor{UkaeaCoreBlue}{RGB}{0,48,86}
|
||||
\definecolor{UkaeaCoreWhite}{RGB}{255,255,255}
|
||||
\definecolor{UkaeaCoreBlack}{RGB}{0,0,0}
|
||||
\definecolor{UkaeaCoreGrey1}{RGB}{88,89,91}
|
||||
\definecolor{UkaeaCoreGrey2}{RGB}{128,130,133}
|
||||
\definecolor{UkaeaCoreGrey3}{RGB}{167,169,172}
|
||||
\definecolor{UkaeaCoreGrey4}{RGB}{209,211,212}
|
||||
\definecolor{UkaeaSecondaryYellow}{RGB}{246,212,77}
|
||||
\definecolor{UkaeaSecondaryGreen}{RGB}{0,111,69}
|
||||
\definecolor{UkaeaSecondaryBlue}{RGB}{0,130,202}
|
||||
\definecolor{UkaeaSecondaryRed}{RGB}{201,37,44}
|
||||
\definecolor{UkaeaSecondaryText}{RGB}{144,145,179}
|
||||
\definecolor{CcfeOrange}{RGB}{248,151,29}
|
||||
\definecolor{OasRed}{RGB}{230,62,48}
|
||||
\definecolor{RaceSilver}{RGB}{191,196,217}
|
||||
\definecolor{MrcGreen}{RGB}{5,206,124}
|
||||
|
||||
\setbeamercolor{headline}{bg=UkaeaCoreBlue}
|
||||
\setbeamercolor{title page}{bg=UkaeaCoreBlue}
|
||||
|
||||
\setbeamercolor{title}{fg=UkaeaCoreWhite, bg=UkaeaCoreBlue}
|
||||
\setbeamercolor{subtitle}{fg=UkaeaCoreWhite}
|
||||
|
||||
\setbeamercolor{author}{fg=UkaeaSecondaryText}
|
||||
\setbeamercolor{date}{fg=UkaeaSecondaryText}
|
||||
\setbeamercolor{institute}{fg=UkaeaSecondaryText}
|
||||
|
||||
\setbeamercolor{normal text}{fg=UkaeaCoreBlue}
|
||||
|
||||
\setbeamercolor{structure}{fg=UkaeaCoreBlue}
|
||||
\setbeamercolor{frametitle}{fg=UkaeaCoreBlue}
|
||||
\setbeamercolor{framesubtitle}{fg=UkaeaCoreBlue}
|
||||
\setbeamercolor{alerted text}{fg=UkaeaSecondaryRed}
|
||||
|
||||
\setbeamercolor{block title}{fg=UkaeaCoreWhite, bg=UkaeaCoreBlue}
|
||||
\setbeamercolor{block body}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaCoreBlue!10}
|
||||
|
||||
\setbeamercolor{block title example}{fg=UkaeaCoreWhite, bg=UkaeaSecondaryBlue}
|
||||
\setbeamercolor{block body example}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaSecondaryBlue!10}
|
||||
|
||||
\setbeamercolor{block title alert}{fg=UkaeaCoreWhite, bg=UkaeaSecondaryRed}
|
||||
\setbeamercolor{block body alert}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaSecondaryRed!10}
|
||||
|
||||
\setbeamercolor{pagenumber}{fg=UkaeaCoreGrey3}
|
||||
|
||||
\mode<all>
|
|
@ -0,0 +1,24 @@
|
|||
% to use non-standard font
|
||||
\usepackage{iftex}
|
||||
|
||||
\usepackage[T1]{fontenc}
|
||||
\IfFileExists{uarial.sty}{
|
||||
\usepackage{newtxsf, uarial, textcomp}
|
||||
\usepackage[italic]{mathastext}
|
||||
}{
|
||||
\usepackage[scaled]{helvet}
|
||||
}
|
||||
\renewcommand\familydefault{\sfdefault}
|
||||
\usepackage[scaled]{beramono}
|
||||
|
||||
\setbeamerfont{title}{family=\fontfamily{ugq}, size=\LARGE}
|
||||
\setbeamerfont{subtitle}{family=\sffamily, series=\mdseries, size=\large}
|
||||
|
||||
\setbeamerfont{institute}{family=\fontfamily{ugq}, size=\Large}
|
||||
\setbeamerfont{author}{family=\sffamily, series=\bfseries, size=\footnotesize}
|
||||
\setbeamerfont{date}{family=\sffamily, series=\bfseries, size=\footnotesize}
|
||||
|
||||
\setbeamerfont{frametitle}{family=\fontfamily{ugq}, size=\LARGE}
|
||||
\setbeamerfont{framesubtitle}{family=\sffamily, series=\mdseries, size=\Large}
|
||||
|
||||
\setbeamerfont{normal text}{family=\sffamily, series=\mdseries, size=\Large}
|
|
@ -0,0 +1,24 @@
|
|||
\mode<presentation>
|
||||
|
||||
\defbeamertemplate{itemize item}{circ}%
|
||||
{\small\raise.2ex\hbox{$\bullet$}}
|
||||
|
||||
\defbeamertemplate{itemize subitem}{circ}%
|
||||
{\small\raise.1ex\hbox{$\circ$}}
|
||||
|
||||
\defbeamertemplate{itemize subsubitem}{circ}%
|
||||
{\scriptsize\raise.1ex\hbox{$\bullet$}}
|
||||
|
||||
\setbeamertemplate{items}[circ]
|
||||
|
||||
\setbeamertemplate{frametitle}
|
||||
{
|
||||
\nointerlineskip%
|
||||
\vspace{4mm}\hspace{-8mm}
|
||||
\begin{beamercolorbox}[wd=0.8\paperwidth]{frametitle}
|
||||
\usebeamerfont{frametitle}{\insertframetitle}\par
|
||||
\usebeamerfont{framesubtitle}{\usebeamercolor{framesubtitle}\insertframesubtitle}
|
||||
\end{beamercolorbox}
|
||||
}
|
||||
|
||||
\mode<all>
|
|
@ -0,0 +1,96 @@
|
|||
\usepackage{tikz}
|
||||
|
||||
\mode<presentation>
|
||||
|
||||
\DeclareOptionBeamer{logo}{\def\beamer@ukaea@logo{#1}}
|
||||
\ExecuteOptionsBeamer{logo=ukaea_logo.png}
|
||||
\DeclareOptionBeamer{extratitletext}{\def\beamer@ukaea@extratitletext{#1}}
|
||||
\ExecuteOptionsBeamer{extratitletext=}
|
||||
\ProcessOptionsBeamer
|
||||
|
||||
\newcommand{\ukaeatriangle}[1] {
|
||||
\begin{tikzpicture}
|
||||
\useasboundingbox (0,0) rectangle(\the\paperwidth,0.2\paperwidth);
|
||||
\node (t1) at (\paperwidth, 0.2\paperwidth) {};
|
||||
\node (t2) at (0.8\paperwidth, 0.2\paperwidth) {};
|
||||
\node (t3) at (\paperwidth, 0.) {};
|
||||
\fill[fill=#1] (t1.center)--(t2.center)--(t3.center);
|
||||
\if \beamer@ukaea@logo\@empty
|
||||
\else
|
||||
\node (logo) at (0.9415\paperwidth, 0.1415\paperwidth) {
|
||||
\includegraphics[height=0.073\paperwidth]{\beamer@ukaea@logo}
|
||||
};
|
||||
\fi
|
||||
\end{tikzpicture}
|
||||
}
|
||||
|
||||
|
||||
\setbeamertemplate{title page}
|
||||
{%
|
||||
\newdimen\title@graphic@height
|
||||
\begin{minipage}[t]{\paperwidth}
|
||||
\hspace*{-1cm}\inserttitlegraphic{}
|
||||
\end{minipage}
|
||||
|
||||
\settoheight{\title@graphic@height}{\inserttitlegraphic{}}
|
||||
\vspace*{-\title@graphic@height minus 0.004\paperheight}
|
||||
\hspace*{-1cm}%
|
||||
\begin{minipage}{\paperwidth}
|
||||
\usebeamercolor[bg]{headline}
|
||||
\ukaeatriangle{bg}\par
|
||||
\end{minipage}
|
||||
|
||||
\vspace*{-2.59cm}
|
||||
\hspace*{-1.085cm}
|
||||
\begin{tikzpicture}
|
||||
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
|
||||
|
||||
\node (q1) at (0,0.54\paperheight) {};
|
||||
\node (q2) at (\the\paperwidth,0.32\paperheight) {};
|
||||
\node (q3) at (0,0) {};
|
||||
\node (q4) at (\the\paperwidth,0) {};
|
||||
\fill[fill=bg] (q1.center)--(q2.center)--(q4.center)--(q3.center);
|
||||
\node[anchor=north west,text width=0.9\paperwidth] (titletext) at (0.4,0.44\paperheight) {
|
||||
\usebeamerfont{institute}{\usebeamercolor[fg]{institute}\insertinstitute}\par
|
||||
\smallskip
|
||||
\usebeamerfont{title}{\usebeamercolor[fg]{title}\inserttitle}\par
|
||||
\usebeamerfont{subtitle}{\usebeamercolor[fg]{subtitle}\insertsubtitle}\par
|
||||
|
||||
\bigskip
|
||||
% \begin{minipage}{0.6\textwidth}
|
||||
\usebeamercolor[fg]{date}{\usebeamerfont{date}\insertdate}\par
|
||||
\usebeamercolor[fg]{author}{\usebeamerfont{author}\insertauthor}\par
|
||||
% \end{minipage}
|
||||
};
|
||||
\node[anchor=south east,text width=0.45\paperwidth] (extratext) at
|
||||
(1.28\paperwidth, 0.15) {
|
||||
\usebeamercolor[fg]{title}
|
||||
\usebeamerfont{main text}
|
||||
\beamer@ukaea@extratitletext
|
||||
};
|
||||
\end{tikzpicture}
|
||||
\addtocounter{framenumber}{-1}
|
||||
}
|
||||
|
||||
|
||||
\setbeamertemplate{headline}
|
||||
{%\vspace{-0.07cm}\hspace{0.795\paperwidth}
|
||||
\ukaeatriangle{bg}
|
||||
\vspace{-0.2\paperwidth}
|
||||
}
|
||||
|
||||
|
||||
\setbeamertemplate{footline}
|
||||
{
|
||||
\leavevmode
|
||||
\hbox{
|
||||
\begin{beamercolorbox}[wd=1.0cm,ht=1.5cm,dp=0.3cm,right, rightskip=0.1cm]{pagenumber}%
|
||||
\textbf{\large{\usebeamercolor[fg]{pagenumber}\insertframenumber{}}}
|
||||
\end{beamercolorbox}
|
||||
\usebeamercolor[fg]{normal text}{\textbf{\Large |} \raisebox{0.5ex}{\insertshorttitle}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\mode<all>
|
||||
\endinput
|
|
@ -0,0 +1,24 @@
|
|||
\mode<presentation>
|
||||
|
||||
% Requirement
|
||||
\RequirePackage{tikz}
|
||||
\RequirePackage{xcolor}
|
||||
|
||||
% Options
|
||||
\DeclareOptionBeamer{logo}{\PassOptionsToPackage{logo=#1}{beamerouterthemeukaea}}
|
||||
\DeclareOptionBeamer{sponsors}{\PassOptionsToPackage{sponsors=#1}{beamerouterthemeukaea}}
|
||||
\ProcessOptionsBeamer
|
||||
|
||||
% Settings
|
||||
\useinnertheme{ukaea}
|
||||
\useoutertheme{ukaea}
|
||||
\usecolortheme{ukaea}
|
||||
\usefonttheme{ukaea}
|
||||
|
||||
\setbeamertemplate{navigation symbols}{}
|
||||
\setbeamertemplate{blocks}[default]
|
||||
%\setbeamertemplate{blocks}[rounded][shadow=true]
|
||||
|
||||
\titlegraphic{\includegraphics[width=\paperwidth]{ukaea-jet.jpg}}
|
||||
|
||||
\mode<all>
|
|
@ -0,0 +1,11 @@
|
|||
{ stdenvNoCC }:
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "latex-beamer-ukaea";
|
||||
version = "0.1";
|
||||
src = ./.;
|
||||
installPhase = ''
|
||||
mkdir -p $out/tex/latex
|
||||
cp -r $src/* $out/tex/latex
|
||||
'';
|
||||
tlType = "run";
|
||||
}
|
After Width: | Height: | Size: 244 KiB |
After Width: | Height: | Size: 24 KiB |
39
system/home/desktop/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
|
175
system/home/desktop/email/default.nix
Normal file
|
@ -0,0 +1,175 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin "davmail-setup" ''
|
||||
systemctl --user restart davmail # Ensure config file is present
|
||||
systemctl --user stop davmail
|
||||
${pkgs.davmail}/bin/davmail -n ~/.davmail.properties
|
||||
systemctl --user restart davmail
|
||||
'')
|
||||
];
|
||||
accounts.email = {
|
||||
maildirBasePath = "Mail";
|
||||
accounts =
|
||||
let
|
||||
realName = "Evie Litherland-Smith";
|
||||
in
|
||||
{
|
||||
proton =
|
||||
let
|
||||
address = "e.litherlandsmith@proton.me";
|
||||
host = "127.0.0.1";
|
||||
tls.enable = false;
|
||||
in
|
||||
{
|
||||
inherit realName address;
|
||||
primary = true;
|
||||
maildir.path = "Proton";
|
||||
imap = {
|
||||
inherit host tls;
|
||||
port = 1143;
|
||||
};
|
||||
smtp = {
|
||||
inherit host tls;
|
||||
port = 1025;
|
||||
};
|
||||
aliases = [
|
||||
"evie@xenia.me.uk"
|
||||
"evie@litherlandsmith.slmail.me"
|
||||
];
|
||||
userName = address;
|
||||
passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}";
|
||||
mu.enable = true;
|
||||
msmtp = {
|
||||
enable = true;
|
||||
extraConfig = {
|
||||
tls = "off";
|
||||
auth = "login";
|
||||
};
|
||||
};
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "both";
|
||||
expunge = "both";
|
||||
remove = "both";
|
||||
patterns = [
|
||||
"*"
|
||||
"!All Mail"
|
||||
"!Labels*"
|
||||
"!Starred"
|
||||
"!Recovered Messages"
|
||||
];
|
||||
subFolders = "Verbatim";
|
||||
extraConfig.account.AuthMechs = "LOGIN";
|
||||
};
|
||||
};
|
||||
icloud =
|
||||
let
|
||||
address = "e.litherlandsmith@icloud.com";
|
||||
in
|
||||
{
|
||||
inherit realName address;
|
||||
primary = false;
|
||||
maildir.path = "iCloud";
|
||||
imap.host = "imap.mail.me.com";
|
||||
smtp.host = "smtp.mail.me.com";
|
||||
userName = address;
|
||||
passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}";
|
||||
mu.enable = true;
|
||||
msmtp.enable = true;
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "both";
|
||||
expunge = "both";
|
||||
remove = "both";
|
||||
patterns = [
|
||||
"*"
|
||||
"!Notes"
|
||||
];
|
||||
subFolders = "Verbatim";
|
||||
};
|
||||
};
|
||||
outlook =
|
||||
let
|
||||
address = "evie.litherland-smith@ukaea.uk";
|
||||
host = "127.0.0.1";
|
||||
tls.enable = false;
|
||||
in
|
||||
{
|
||||
inherit realName address;
|
||||
primary = false;
|
||||
maildir.path = "Outlook";
|
||||
imap = {
|
||||
inherit host tls;
|
||||
port = 1144;
|
||||
};
|
||||
smtp = {
|
||||
inherit host tls;
|
||||
port = 1026;
|
||||
};
|
||||
aliases = [ "elitherl@jet.uk" ];
|
||||
userName = address;
|
||||
passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}";
|
||||
mu.enable = true;
|
||||
msmtp = {
|
||||
enable = true;
|
||||
extraConfig = {
|
||||
tls = "off";
|
||||
auth = "login";
|
||||
};
|
||||
};
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "both";
|
||||
expunge = "both";
|
||||
remove = "both";
|
||||
patterns = [
|
||||
"*"
|
||||
"!Conversation History"
|
||||
"!Snoozed"
|
||||
"!Social Activity Notifications"
|
||||
"!Sync Issues*"
|
||||
"!Unsent Messages"
|
||||
];
|
||||
subFolders = "Verbatim";
|
||||
extraConfig.account.AuthMechs = "LOGIN";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
programs = {
|
||||
mu.enable = true;
|
||||
msmtp.enable = true;
|
||||
mbsync = {
|
||||
enable = true;
|
||||
groups.inboxes = {
|
||||
proton = [ "INBOX" ];
|
||||
icloud = [ "INBOX" ];
|
||||
outlook = [ "INBOX" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
services.mbsync = {
|
||||
inherit (config.programs.mbsync) enable package;
|
||||
frequency = "*:0/30"; # Every 30 minutes
|
||||
verbose = true;
|
||||
preExec = null;
|
||||
postExec = null;
|
||||
};
|
||||
systemd.user.services.davmail = {
|
||||
Unit = {
|
||||
Description = "Davmail server";
|
||||
Wants = [ "network-online.target" ];
|
||||
After = [ "network-online.target" ];
|
||||
};
|
||||
Service = {
|
||||
Environment = [ "PATH=/run/current-system/sw/bin/:$PATH" ];
|
||||
Restart = "always";
|
||||
ExecStartPre = with config.home; ''
|
||||
/bin/sh -c "if [ ! -f ${homeDirectory}/.davmail.properties ]; then cp ${./davmail.properties} ${homeDirectory}/.davmail.properties; fi; chmod 644 ${homeDirectory}/.davmail.properties"
|
||||
'';
|
||||
ExecStart = "${pkgs.davmail}/bin/davmail -notray ${config.home.homeDirectory}/.davmail.properties";
|
||||
};
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
};
|
||||
}
|
3
system/home/desktop/email/signatures/personal
Normal file
|
@ -0,0 +1,3 @@
|
|||
--
|
||||
Evelyn Litherland-Smith (she/they)
|
||||
email: evie@xenia.me.uk
|
5
system/home/desktop/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
|
25
system/home/desktop/fuzzel.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, ... }:
|
||||
{
|
||||
programs.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;
|
||||
};
|
||||
colors.border = lib.mkForce "${config.lib.stylix.scheme.base0E}ff";
|
||||
};
|
||||
};
|
||||
}
|
459
system/home/desktop/hyprland.nix
Normal file
|
@ -0,0 +1,459 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./waybar.nix
|
||||
./fuzzel.nix
|
||||
./mako.nix
|
||||
];
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin "protonmail-setup-bridge" ''
|
||||
pkill -9 -f protonmail-bridge
|
||||
PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -c
|
||||
${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl dispatch exec "PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
|
||||
'')
|
||||
];
|
||||
services = {
|
||||
hyprpaper.enable = true;
|
||||
kanshi.systemdTarget = "hyprland-session.target";
|
||||
gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||
avizo = {
|
||||
enable = true;
|
||||
settings.default = {
|
||||
image-opacity = lib.mkForce "1.0";
|
||||
border-color =
|
||||
let
|
||||
scheme = config.lib.stylix.scheme;
|
||||
in
|
||||
lib.mkForce "rgba(${scheme.base0E-rgb-r}, ${scheme.base0E-rgb-g}, ${scheme.base0E-rgb-b}, 1.0)";
|
||||
};
|
||||
};
|
||||
kdeconnect = {
|
||||
enable = true;
|
||||
indicator = true;
|
||||
};
|
||||
udiskie = {
|
||||
enable = true;
|
||||
notify = true;
|
||||
automount = true;
|
||||
tray = "never";
|
||||
};
|
||||
hypridle = {
|
||||
enable = true;
|
||||
settings =
|
||||
let
|
||||
hyprctl = "${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl";
|
||||
hyprlock = "${config.programs.hyprlock.package}/bin/hyprlock";
|
||||
in
|
||||
{
|
||||
general = {
|
||||
after_sleep_cmd = "${hyprctl} dispatch dpms on";
|
||||
ignore_dbus_inhibit = false;
|
||||
lock_cmd = "${hyprlock}";
|
||||
};
|
||||
|
||||
listener = [
|
||||
{
|
||||
timeout = 900;
|
||||
on-timeout = "${hyprlock}";
|
||||
}
|
||||
{
|
||||
timeout = 1200;
|
||||
on-timeout = "${hyprctl} dispatch dpms off";
|
||||
on-resume = "${hyprctl} dispatch dpms on";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
programs = {
|
||||
waybar.systemd.target = "hyprland-session.target";
|
||||
hyprlock =
|
||||
let
|
||||
font = config.stylix.fonts.sansSerif.name;
|
||||
scheme = config.lib.stylix.scheme;
|
||||
accent = scheme.base0E;
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
hide_cursor = true;
|
||||
grace = 5;
|
||||
ignore_emptry_input = true;
|
||||
};
|
||||
background = [
|
||||
{
|
||||
monitor = "";
|
||||
path = "screenshot";
|
||||
blur_passes = 3;
|
||||
blur_size = 8;
|
||||
}
|
||||
];
|
||||
label = [
|
||||
{
|
||||
monitor = "";
|
||||
text = "cmd[update:30000] echo \"$(date +\"%R\")\"";
|
||||
color = "0xff${scheme.base00}";
|
||||
font_size = 90;
|
||||
font_family = font;
|
||||
position = "-30, 0";
|
||||
halign = "right";
|
||||
valign = "top";
|
||||
}
|
||||
{
|
||||
monitor = "";
|
||||
text = "cmd[update:43200000] echo \"$(date +\"%A,%e %B %Y\")\"";
|
||||
color = "0xff${scheme.base00}";
|
||||
font_size = 25;
|
||||
font_family = font;
|
||||
position = "-30, -150";
|
||||
halign = "right";
|
||||
valign = "top";
|
||||
}
|
||||
];
|
||||
image = [
|
||||
{
|
||||
monitor = "";
|
||||
path = "${./pfp/personal.png}";
|
||||
size = 100;
|
||||
border_color = "0xff${accent}";
|
||||
position = "0, 75";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
];
|
||||
input-field = [
|
||||
{
|
||||
monitor = "";
|
||||
size = "300, 60";
|
||||
outline_thickness = 2;
|
||||
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true;
|
||||
outer_color = "0xff${accent}";
|
||||
inner_color = "0xff${scheme.base00}";
|
||||
font_color = "0xff${scheme.base05}";
|
||||
fade_on_empty = false;
|
||||
placeholder_text = " Logged in as <span foreground=\"##${accent}\">$USER</span>";
|
||||
check_color = "0xff${scheme.blue}";
|
||||
fail_color = "0xff${scheme.red}";
|
||||
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
|
||||
hide_input = false;
|
||||
position = "0, -50";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
monitor = [ ",preferred,auto,auto" ];
|
||||
env = [
|
||||
"XDG_CURRENT_DESKTOP=Hyprland"
|
||||
"XDG_SESSION_DESKTOP=Hyprland"
|
||||
"GDK_BACKEND=wayland,x11"
|
||||
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||
"GRIM_DEFAULT_DIR,${config.xdg.userDirs.pictures}/Screenshots"
|
||||
];
|
||||
exec-once = [
|
||||
"systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME"
|
||||
"${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
||||
"${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
|
||||
"PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
|
||||
"sleep 5; ${pkgs.dex}/bin/dex -a"
|
||||
];
|
||||
gestures.workspace_swipe = true;
|
||||
input = {
|
||||
kb_layout = osConfig.services.xserver.xkb.layout;
|
||||
follow_mouse = 1;
|
||||
touchpad.natural_scroll = "yes";
|
||||
};
|
||||
dwindle = {
|
||||
force_split = 2;
|
||||
preserve_split = false;
|
||||
smart_split = false;
|
||||
smart_resizing = false;
|
||||
special_scale_factor = 0.95;
|
||||
no_gaps_when_only = 0;
|
||||
use_active_for_splits = true;
|
||||
default_split_ratio = 1.0;
|
||||
};
|
||||
master = {
|
||||
allow_small_split = true;
|
||||
special_scale_factor = 0.95;
|
||||
mfact = 0.5;
|
||||
# new_is_master = false;
|
||||
new_on_top = false;
|
||||
no_gaps_when_only = 0;
|
||||
orientation = "left";
|
||||
inherit_fullscreen = false;
|
||||
smart_resizing = false;
|
||||
drop_at_cursor = true;
|
||||
};
|
||||
general = {
|
||||
"col.active_border" = lib.mkForce "rgb(${config.lib.stylix.scheme.magenta})";
|
||||
gaps_in = 2.5;
|
||||
gaps_out = 5;
|
||||
border_size = 1;
|
||||
# cursor_inactive_timeout = 0;
|
||||
layout = "master";
|
||||
};
|
||||
decoration = {
|
||||
rounding = 5;
|
||||
"col.shadow" = lib.mkForce "rgba(${config.lib.stylix.scheme.base00}0d)";
|
||||
drop_shadow = "yes";
|
||||
shadow_ignore_window = true;
|
||||
shadow_range = 4;
|
||||
shadow_render_power = 3;
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 5;
|
||||
passes = 3;
|
||||
new_optimizations = true;
|
||||
brightness = 1.0;
|
||||
noise = 2.0e-2;
|
||||
};
|
||||
};
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
animation = [
|
||||
"windows, 1, 7, myBezier"
|
||||
"windowsOut, 1, 7, default, popin 80%"
|
||||
"border, 1, 10, default"
|
||||
"borderangle, 1, 8, default"
|
||||
"fade, 1, 7, default"
|
||||
"workspaces, 1, 6, default"
|
||||
];
|
||||
};
|
||||
misc = {
|
||||
disable_splash_rendering = true;
|
||||
disable_autoreload = true;
|
||||
mouse_move_enables_dpms = true;
|
||||
key_press_enables_dpms = true;
|
||||
};
|
||||
xwayland.force_zero_scaling = true;
|
||||
layerrule =
|
||||
let
|
||||
blur = x: "blur, ^(${x})$";
|
||||
ignorealpha = x: "ignorealpha 0.3, ^(${x})$";
|
||||
layers = [
|
||||
"system-menu"
|
||||
"gtk-layer-shell"
|
||||
"notifications"
|
||||
"launcher"
|
||||
"logout_dialog"
|
||||
"waybar"
|
||||
"avizo"
|
||||
];
|
||||
in
|
||||
(lib.lists.forEach layers blur) ++ (lib.lists.forEach layers ignorealpha);
|
||||
windowrule = [
|
||||
# Float + move system windows
|
||||
# Password prompts
|
||||
"float, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
"center, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
"pin, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
"dimaround, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
"stayfocused, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
# Network and Bluetooth control panels
|
||||
"float, pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
|
||||
"size 800 600, pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
|
||||
"move onscreen 100%-820 50,pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
|
||||
# File picker dialog
|
||||
"float, xdg-desktop-portal-gtk"
|
||||
"size 800 600, xdg-desktop-portal-gtk"
|
||||
"center, xdg-desktop-portal-gtk"
|
||||
|
||||
# Workspace rules
|
||||
"workspace 2, firefox" # Browser
|
||||
"workspace 3, (libreoffice|soffice)(.*)" # Documents
|
||||
"workspace 4, (signal|whatsapp-for-linux|WebCord|teams-for-linux)" # Messaging
|
||||
"workspace 5, (org.remmina.Remmina|Nxplayer.bin)" # Remote Desktop
|
||||
"workspace 6 silent, (steam|steam_app|lutris|page.kramo.Cartridges|org.prismlauncher.PrismLauncher)" # Gaming
|
||||
|
||||
# PrismLauncher / Minecraft
|
||||
"float, org.prismlauncher.PrismLauncher"
|
||||
"center, org.prismlauncher.PrismLauncher"
|
||||
"size 800 600, org.prismlauncher.PrismLauncher"
|
||||
];
|
||||
windowrulev2 = [
|
||||
# Firefox PIP
|
||||
"float, title:Picture-in-Picture|Library,class:firefox"
|
||||
"size 750 400, title:Picture-in-Picture,class:firefox"
|
||||
"size 800 800, title:Library,class:firefox"
|
||||
"move onscreen 100%-775 100%-425, title:Picture-in-Picture,class:firefox"
|
||||
"center, title:Library,class:firefox"
|
||||
"pin, title:Picture-in-Picture,class:firefox"
|
||||
|
||||
# NautilusPreviewer (Sushi)
|
||||
"float, class:org.gnome.NautilusPreviewer"
|
||||
"center, class:org.gnome.NautilusPreviewer"
|
||||
|
||||
# Electron file picker dialog
|
||||
"float, title:Open Files,class:electron"
|
||||
"size 800 600, title:Open Files,class:electron"
|
||||
"center, title:Open Files,class:electron"
|
||||
|
||||
# Inhibit idle when watching videos
|
||||
"idleinhibit fullscreen, class:firefox|com.github.rafostar.Clapper"
|
||||
|
||||
# Inhibit idle when playing games
|
||||
"idleinhibit always, class:(steam_app|Minecraft).*"
|
||||
|
||||
# LibreOffice
|
||||
"suppressevent fullscreen maximize, class:(libreoffice|soffice)(.*)"
|
||||
"float, title:Open,class:(libreoffice|soffice)(.*)"
|
||||
|
||||
# Steam
|
||||
"float, title:Friends List,class:steam"
|
||||
"size 400 600, title:Friends List,class:steam"
|
||||
"float, title:(.*)(Chat),class:steam"
|
||||
"size 800 600, title:(.*)(Chat),class:steam"
|
||||
"float, title:Steam Settings,class:steam"
|
||||
"size 800 600, title:Steam Settings,class:steam"
|
||||
"float, title:(.*)(Controller Layout),class:steam"
|
||||
"size 1200 800, title:(.*)(Controller Layout),class:steam"
|
||||
|
||||
# Remmina / NoMachine
|
||||
"suppressevent fullscreen maximize, class:org.remmina.Remmina|Nxplayer.bin"
|
||||
"float, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
|
||||
"center, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
|
||||
];
|
||||
bind =
|
||||
let
|
||||
withTerm =
|
||||
{
|
||||
term ? "alacritty",
|
||||
package ? config.programs.${term}.package,
|
||||
progname,
|
||||
args ? "",
|
||||
}:
|
||||
"${package}/bin/${term} -T ${progname} -e ${progname} ${args}";
|
||||
workspace = w: [
|
||||
"SUPER, ${toString w}, moveworkspacetomonitor, ${toString w} current"
|
||||
"SUPER, ${toString w}, workspace, ${toString w}"
|
||||
"SUPER SHIFT, ${toString w}, movetoworkspace, ${toString w}"
|
||||
];
|
||||
in
|
||||
lib.lists.flatten (lib.lists.forEach (lib.lists.range 1 9) workspace)
|
||||
++ (
|
||||
let
|
||||
btm_args = "--autohide_time --battery --celsius --enable_cache_memory --enable_gpu_memory --group --hide_avg_cpu --hide_table_gap --retention=3m --show_table_scroll_position";
|
||||
in
|
||||
[
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
# Open Hyprland wiki at correct version number
|
||||
"CTRL_SHIFT, H, exec, xdg-open \"https://wiki.hyprland.org/$(${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl version -j | ${pkgs.jq}/bin/jq $args.tag | ${pkgs.gnused}/bin/sed s/v// | ${pkgs.gnused}/bin/sed s/\\\"//g)\""
|
||||
|
||||
"SUPER, F1, exec, ${config.programs.hyprlock.package}/bin/hyprlock"
|
||||
# "SUPER, F1, exec, ${config.programs.swaylock.package}/bin/swaylock --screenshots --clock --indicator --grace-no-mouse"
|
||||
"SUPER, Q, killactive,"
|
||||
"SUPER, V, togglefloating"
|
||||
# "SUPER SHIFT, V, setfloating" ## TODO setfloating exists
|
||||
# in newer version of Hyprland than mine
|
||||
"SUPER SHIFT, V, moveactive, exact 1% 4%"
|
||||
"SUPER SHIFT, V, resizeactive, exact 800 600"
|
||||
"SUPER SHIFT, V, pin"
|
||||
"SUPER, M, fullscreen, 1" # Maximise window
|
||||
"SUPER SHIFT, M, fullscreen, 0" # Actual fullscreen
|
||||
"SUPER, Z, exec, ${config.services.mako.package}/bin/makoctl restore"
|
||||
"SUPER SHIFT, Z, exec, exec ${config.services.mako.package}/bin/makoctl dismiss -a"
|
||||
|
||||
# Common program shortcuts
|
||||
"SUPER, Space, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
||||
"SUPER, Return, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
||||
"SUPER SHIFT, Return, exec, ${config.programs.emacs.finalPackage}/bin/emacsclient -c"
|
||||
"SUPER, W, exec, ${config.programs.firefox.finalPackage}/bin/firefox"
|
||||
"SUPER, F, exec, ${pkgs.gnome.nautilus}/bin/nautilus"
|
||||
|
||||
# Terminal utilities
|
||||
"SUPER, S, exec, ${
|
||||
withTerm {
|
||||
progname = "${config.programs.bottom.package}/bin/btm";
|
||||
args = btm_args;
|
||||
}
|
||||
}"
|
||||
"SUPER SHIFT, S, exec, ${
|
||||
withTerm {
|
||||
progname = "${config.programs.bottom.package}/bin/btm";
|
||||
args = btm_args + " --basic";
|
||||
}
|
||||
}"
|
||||
"SUPER, C, exec, ${withTerm { progname = "${config.programs.cava.package}/bin/cava"; }}"
|
||||
|
||||
# Misc useful binds
|
||||
",Print,exec,${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"
|
||||
# ",XF86Calculator,exec,pkill rofi || ${config.programs.rofi.finalPackage}/bin/rofi -show calc"
|
||||
|
||||
# Movement binds
|
||||
"SUPER, H, movefocus, l"
|
||||
"SUPER, L, movefocus, r"
|
||||
"SUPER, K, movefocus, u"
|
||||
"SUPER, J, movefocus, d"
|
||||
"SUPER SHIFT, H, movewindow, l"
|
||||
"SUPER SHIFT, L, movewindow, r"
|
||||
"SUPER SHIFT, K, movewindow, u"
|
||||
"SUPER SHIFT, J, movewindow, d"
|
||||
|
||||
# Special workspaces
|
||||
"SUPER, comma, workspace, m-1"
|
||||
"SUPER SHIFT, comma, movetoworkspace, r-1"
|
||||
"SUPER, period, workspace, m+1"
|
||||
"SUPER SHIFT, period, movetoworkspace, r+1"
|
||||
"SUPER, N, workspace, empty"
|
||||
"SUPER SHIFT, N, movetoworkspace, empty"
|
||||
"SUPER, minus, togglespecialworkspace"
|
||||
"SUPER SHIFT, minus, movetoworkspace, special"
|
||||
"SUPER, bracketright, focusmonitor, +1"
|
||||
"SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1"
|
||||
"SUPER, bracketleft, focusmonitor, -1"
|
||||
"SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, -1"
|
||||
"SUPER, O, focusurgentorlast"
|
||||
]
|
||||
);
|
||||
bindl = [
|
||||
# Sound
|
||||
",XF86AudioMute,exec,${config.services.avizo.package}/bin/volumectl %"
|
||||
",XF86AudioMicMute,exec,${config.services.avizo.package}/bin/volumectl -m %"
|
||||
|
||||
# Playback
|
||||
",XF86AudioPlay,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
||||
",XF86AudioStop,exec,${pkgs.playerctl}/bin/playerctl play-pause"
|
||||
",XF86AudioPrev,exec,${pkgs.playerctl}/bin/playerctl previous"
|
||||
",XF86AudioNext,exec,${pkgs.playerctl}/bin/playerctl next"
|
||||
];
|
||||
bindle = [
|
||||
# Sound
|
||||
",XF86AudioRaiseVolume,exec,${config.services.avizo.package}/bin/volumectl -u + 5"
|
||||
",XF86AudioLowerVolume,exec,${config.services.avizo.package}/bin/volumectl -u - 5"
|
||||
|
||||
# Brightness
|
||||
",XF86MonBrightnessUp,exec,${config.services.avizo.package}/bin/lightctl + 5"
|
||||
",XF86MonBrightnessDown,exec,${config.services.avizo.package}/bin/lightctl - 5"
|
||||
];
|
||||
bindm = [
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
"SUPER, mouse:272, movewindow"
|
||||
"SUPER, mouse:273, resizewindow"
|
||||
];
|
||||
};
|
||||
};
|
||||
xdg.configFile."hypr/hyprpaper.conf".text = ''
|
||||
preload = ${config.stylix.image}
|
||||
wallpaper = ,${config.stylix.image}
|
||||
'';
|
||||
|
||||
}
|
18
system/home/desktop/mako.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ config, lib, ... }:
|
||||
{
|
||||
services.mako = {
|
||||
enable = true;
|
||||
anchor = "top-right";
|
||||
width = 600;
|
||||
height = 600;
|
||||
layer = "top";
|
||||
markup = true;
|
||||
maxVisible = 10;
|
||||
icons = true;
|
||||
iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}";
|
||||
borderRadius = 5;
|
||||
borderSize = 1;
|
||||
borderColor = lib.mkForce config.lib.stylix.scheme.withHashtag.base0E;
|
||||
defaultTimeout = (builtins.mul 5 1000); # 5s timeout
|
||||
};
|
||||
}
|
77
system/home/desktop/mimeapps.nix
Normal file
|
@ -0,0 +1,77 @@
|
|||
let
|
||||
emacs = [ "emacsclient.desktop" ];
|
||||
browser = [ "firefox.desktop" ];
|
||||
in
|
||||
{
|
||||
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||
"inode/symlink" = [ "org.gnome.Nautilus.desktop" ];
|
||||
|
||||
"image/jpeg" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
||||
"image/png" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
||||
"video/mp4" = [ "com.github.rafostar.Clapper.desktop" ];
|
||||
|
||||
"text/plain" = emacs;
|
||||
"text/richtext" = emacs;
|
||||
"text/org" = emacs;
|
||||
"text/markdown" = emacs;
|
||||
"text/rust" = emacs;
|
||||
"text/csv" = emacs;
|
||||
"text/css" = emacs;
|
||||
"text/tab-separated-values" = emacs;
|
||||
"text/html" = browser;
|
||||
|
||||
"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/zip" = [ "org.gnome.FileRoller.desktop" ];
|
||||
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
||||
"application/epub+zip" = [ "org.gnome.Evince.desktop" ];
|
||||
"application/msword" = [ "writer.desktop" ];
|
||||
"application/x-shellscript" = emacs;
|
||||
"application/x-docbook+xml" = emacs;
|
||||
"application/x-yaml" = emacs;
|
||||
"application/x-archive" = [ "org.gnome.FileRoller.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" = 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;
|
||||
}
|
BIN
system/home/desktop/pfp/personal.png
Normal file
After Width: | Height: | Size: 178 KiB |
BIN
system/home/desktop/pfp/personal_micro.jpg
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
system/home/desktop/pfp/work.jpg
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
system/home/desktop/pfp/work_micro.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
360
system/home/desktop/plasma.nix
Normal file
|
@ -0,0 +1,360 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
inputs,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
{
|
||||
stylix.targets.kde.enable = false;
|
||||
imports = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
|
||||
home.packages = with pkgs; [
|
||||
protonmail-bridge-gui
|
||||
libreoffice-qt-fresh
|
||||
rc2nix
|
||||
wl-clipboard
|
||||
];
|
||||
services.gpg-agent.pinentryPackage = pkgs.pinentry-qt;
|
||||
programs.plasma = {
|
||||
enable = true;
|
||||
overrideConfig = true;
|
||||
|
||||
workspace = {
|
||||
iconTheme = config.gtk.iconTheme.name;
|
||||
cursor = {
|
||||
inherit (config.home.pointerCursor) size;
|
||||
theme = config.home.pointerCursor.name;
|
||||
};
|
||||
wallpaper = config.stylix.image;
|
||||
};
|
||||
|
||||
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-alacritty" = {
|
||||
name = "Launch Alacritty terminal emulator";
|
||||
key = "Ctrl+Alt+T";
|
||||
command = "alacritty";
|
||||
};
|
||||
"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;
|
||||
screen = "all";
|
||||
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.pager";
|
||||
config.General = {
|
||||
showWindowIcons = "true";
|
||||
showOnlyCurrentScreen = "false";
|
||||
wrapPage = "true";
|
||||
};
|
||||
}
|
||||
"org.kde.plasma.panelspacer"
|
||||
{
|
||||
name = "org.kde.plasma.icontasks";
|
||||
config.General = {
|
||||
maxStripes = "1";
|
||||
showToolTips = "true";
|
||||
launchers = [
|
||||
"preferred://filemanager"
|
||||
"preferred://browser"
|
||||
"applications:emacs.desktop"
|
||||
"applications:Alacritty.desktop"
|
||||
"applications:writer.desktop"
|
||||
"applications:calc.desktop"
|
||||
"applications:impress.desktop"
|
||||
"applications:org.kde.okular.desktop"
|
||||
"applications:org.kde.elisa.desktop"
|
||||
"applications:org.kde.plasma-systemmonitor.desktop"
|
||||
"applications:systemsettings.desktop"
|
||||
];
|
||||
};
|
||||
}
|
||||
"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.konsole.desktop"."_launch" = [ ];
|
||||
"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;
|
||||
kwalletrc."org.freedesktop.secrets".apiEnabled = true;
|
||||
kcminputrc.Keyboard.NumLock = 1;
|
||||
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."base0E-rgb-r";
|
||||
g = config.lib.stylix.scheme."base0E-rgb-g";
|
||||
b = config.lib.stylix.scheme."base0E-rgb-b";
|
||||
in
|
||||
"${r}, ${g}, ${b}";
|
||||
in
|
||||
{
|
||||
inherit AccentColor;
|
||||
LastUsedCustomAccentColor = AccentColor;
|
||||
TerminalApplication = "alacritty";
|
||||
TerminalService = "Alacritty.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 = "${osConfig.location.latitude}";
|
||||
LongitudeFixed = "${osConfig.location.longitude}";
|
||||
};
|
||||
"Effect-translucency" = {
|
||||
Inactive = 100;
|
||||
MoveResize = 100;
|
||||
Dialogs = 100;
|
||||
ComboboxPopups = 100;
|
||||
Menus = 100;
|
||||
};
|
||||
"org.kde.kdecoration2" = {
|
||||
BorderSize = "None";
|
||||
BorderSizeAuto = "false";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
xdg.configFile."autostart/proton-bridge-gui.desktop".source = "${pkgs.protonmail-bridge-gui}/share/applications/proton-bridge-gui.desktop";
|
||||
}
|
202
system/home/desktop/sway.nix
Normal file
|
@ -0,0 +1,202 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./waybar.nix
|
||||
./fuzzel.nix
|
||||
./mako.nix
|
||||
];
|
||||
stylix.targets.swaylock.useImage = false; # Using swaylock-effects instead
|
||||
home.packages = with pkgs; [
|
||||
libreoffice-fresh
|
||||
ffmpeg
|
||||
grim
|
||||
slurp
|
||||
swappy
|
||||
wl-clipboard
|
||||
swayimg
|
||||
swaybg
|
||||
(writeShellScriptBin "swaylockfx" ''
|
||||
${swaylock-effects}/bin/swaylock --screenshots --clock --indicator --effect-blur 7x5 --effect-vignette 0.5:0.5
|
||||
'')
|
||||
(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;
|
||||
package = pkgs.swaylock-effects;
|
||||
};
|
||||
};
|
||||
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;
|
||||
};
|
||||
swayidle = {
|
||||
enable = true;
|
||||
timeouts = [
|
||||
{
|
||||
timeout = 60 * 15; # 15 minutes
|
||||
command = "swaylockfx";
|
||||
}
|
||||
];
|
||||
};
|
||||
udiskie = {
|
||||
enable = true;
|
||||
notify = true;
|
||||
automount = true;
|
||||
tray = "never";
|
||||
};
|
||||
};
|
||||
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 = osConfig.services.xserver.xkb.layout;
|
||||
};
|
||||
"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
|
||||
## Screenshot
|
||||
"Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -";
|
||||
|
||||
## 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 swaylockfx";
|
||||
"${modifier}+z" = "exec ${config.services.mako.package}/bin/makoctl restore";
|
||||
"${modifier}+Shift+z" = "exec ${config.services.mako.package}/bin/makoctl dismiss -a";
|
||||
"${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
|
||||
'';
|
||||
};
|
||||
xdg.configFile."swappy/config".source = ./swappy.conf;
|
||||
}
|
19
system/home/desktop/terminal/alacritty.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
shell = "${config.programs.zsh.package}/bin/zsh";
|
||||
window = {
|
||||
dynamic_title = true;
|
||||
padding = {
|
||||
x = 5;
|
||||
y = 5;
|
||||
};
|
||||
};
|
||||
live_config_reload = true;
|
||||
selection.save_to_clipboard = true;
|
||||
mouse.hide_when_typing = true;
|
||||
};
|
||||
};
|
||||
}
|
4
system/home/desktop/terminal/default.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [ ./alacritty.nix ];
|
||||
}
|
BIN
system/home/desktop/wallpapers/Clearday.jpg
Normal file
After Width: | Height: | Size: 747 KiB |
BIN
system/home/desktop/wallpapers/Clearnight.jpg
Normal file
After Width: | Height: | Size: 7 MiB |
BIN
system/home/desktop/wallpapers/Cloudsday.jpg
Normal file
After Width: | Height: | Size: 5.3 MiB |
BIN
system/home/desktop/wallpapers/Cloudsnight.jpg
Normal file
After Width: | Height: | Size: 7.8 MiB |
BIN
system/home/desktop/wallpapers/Rainnight.jpg
Normal file
After Width: | Height: | Size: 3.6 MiB |
BIN
system/home/desktop/wallpapers/blake.png
Normal file
After Width: | Height: | Size: 562 KiB |
BIN
system/home/desktop/wallpapers/default.jpg
Normal file
After Width: | Height: | Size: 642 KiB |
BIN
system/home/desktop/wallpapers/evening-sky.png
Normal file
After Width: | Height: | Size: 4.3 MiB |
BIN
system/home/desktop/wallpapers/forrest.png
Normal file
After Width: | Height: | Size: 3.7 MiB |
BIN
system/home/desktop/wallpapers/salty_mountains.png
Normal file
After Width: | Height: | Size: 1,000 KiB |
BIN
system/home/desktop/wallpapers/science/2422830.jpg
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
system/home/desktop/wallpapers/science/5636374.png
Normal file
After Width: | Height: | Size: 4.7 MiB |
After Width: | Height: | Size: 1.9 MiB |
BIN
system/home/desktop/wallpapers/science/JET plasmas.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
system/home/desktop/wallpapers/science/JET wallpaper.jpg
Normal file
After Width: | Height: | Size: 4.9 MiB |
BIN
system/home/desktop/wallpapers/science/LHC Science.jpg
Normal file
After Width: | Height: | Size: 1 MiB |
BIN
system/home/desktop/wallpapers/science/MAST wallpaper.png
Normal file
After Width: | Height: | Size: 2.6 MiB |
BIN
system/home/desktop/wallpapers/science/MAST-U 16x9.jpg
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
system/home/desktop/wallpapers/science/chang_hyun_vvts6_1a.jpg
Normal file
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 8.3 MiB |
After Width: | Height: | Size: 12 MiB |
After Width: | Height: | Size: 14 MiB |
After Width: | Height: | Size: 11 MiB |
After Width: | Height: | Size: 4.6 MiB |
After Width: | Height: | Size: 7.9 MiB |
After Width: | Height: | Size: 10 MiB |
After Width: | Height: | Size: 6 MiB |
After Width: | Height: | Size: 668 KiB |
BIN
system/home/desktop/wallpapers/science/mastu_glass_side_s3.png
Normal file
After Width: | Height: | Size: 6.6 MiB |
BIN
system/home/desktop/wallpapers/science/oct5-selfie.jpg
Normal file
After Width: | Height: | Size: 2.6 MiB |