Restructured to a state that things build again

Remove all home-manager config and related files

Slight change of layout that makes more sense with new scope
This commit is contained in:
Evie Litherland-Smith 2024-05-11 15:41:19 +01:00
parent c9b940f43b
commit 0682bb8cdb
389 changed files with 354 additions and 12397 deletions

View file

@ -1,3 +0,0 @@
indent_type = "Spaces"
call_parentheses = "None"
collapse_simple_statement = "Always"

30
configuration/Legion.nix Normal file
View file

@ -0,0 +1,30 @@
{
config,
pkgs,
...
}: {
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
];
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
users.mutableUsers = false;
system.autoUpgrade = {
dates = "02:00";
allowReboot = true;
rebootWindow = {
lower = "02:00";
upper = "05:00";
};
};
environment.systemPackages = with pkgs; [nil];
}

View file

@ -0,0 +1,19 @@
{
config,
pkgs,
...
}: {
imports = [./laptop.nix];
boot = {
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;
extraPackages = with pkgs; [amdvlk rocmPackages.clr.icd];
extraPackages32 = [pkgs.driversi686Linux.amdvlk];
};
}

17
configuration/Ronin.nix Normal file
View file

@ -0,0 +1,17 @@
{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 samba];
};
services.ollama.enable = true;
}

20
configuration/Scorch.nix Normal file
View file

@ -0,0 +1,20 @@
{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];
};
services.ollama.enable = true;
}

View file

@ -1,4 +1,5 @@
{config, ...}: {
imports = [./desktop.nix ./games.nix];
boot = {
initrd.kernelModules = ["amdgpu"];
extraModulePackages = with config.boot.kernelPackages; [v4l2loopback];

View file

@ -1,9 +1,42 @@
{
lib,
pkgs,
fonts,
iosevkaCustom,
...
}: {
imports = [./registry.nix];
nix = {
enable = true;
package = pkgs.nixVersions.unstable;
settings = {
cores = 0;
max-jobs = "auto";
trusted-users = ["root"];
experimental-features = ["nix-command" "flakes"];
auto-optimise-store = true;
};
channel.enable = true;
nixPath = ["nixpkgs=${pkgs.path}"];
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 = {
autoUpgrade = {
enable = true;
flake = "git+https://git.xenia.me.uk/pixelifytica/nixos.git?ref=main";
allowReboot = lib.mkDefault false;
};
stateVersion = "23.05";
};
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
@ -13,6 +46,11 @@
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 = {
sessionVariables = {
XDG_CONFIG_HOME = "$HOME/.config";
@ -23,23 +61,16 @@
systemPackages = with pkgs; [
coreutils
libsecret
gnumake
git
git-sync
pinentry
zip
unzip
jq
fd
ripgrep
rclone
wireguard-tools
dogdns
du-dust
ffmpeg
nitch
neofetch
bottom
home-manager
nix-output-monitor
];
localBinInPath = true;
@ -87,23 +118,23 @@
};
};
fonts = {
packages = with pkgs; [
fonts.serif.package
fonts.sansSerif.package
fonts.monospace.package
fonts.emoji.package
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 = {
serif = [fonts.serif.name];
sansSerif = [fonts.sansSerif.name];
monospace = [fonts.monospace.name];
emoji = [fonts.emoji.name];
defaultFonts = with iosevkaCustom.names; {
serif = [iosevka-custom-aile];
sansSerif = [iosevka-custom-aile];
monospace = [iosevka-custom-nerdfont];
emoji = ["Noto Color Emoji"];
};
};
};

View file

@ -1,15 +1,15 @@
{
config,
lib,
pkgs,
user,
...
}: {
imports = [./default.nix ./firefox.nix];
imports = [./default.nix];
nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";
environment = {
sessionVariables = {
NIXOS_OZONE_WL = "1";
XDG_SESSION_TYPE = "wayland";
GRIM_DEFAULT_DIR = "$HOME/Pictures/Grim";
};
systemPackages = with pkgs; [
@ -63,6 +63,139 @@
enable = true;
plugins = with pkgs.xfce; [thunar-archive-plugin thunar-volman];
};
sway = {
enable = true;
package =
pkgs.swayfx.overrideAttrs
(old: {passthru.providedSessions = ["sway"];});
wrapperFeatures.gtk = true;
};
firefox = {
enable = true;
languagePacks = ["en-GB"];
policies = {
BlockAboutProfiles = true;
Containers = {
Default = [
{
name = "Personal";
icon = "fingerprint";
color = "purple";
}
{
name = "Work";
icon = "briefcase";
color = "blue";
}
];
};
Cookies = {
Behavior = "reject-tracker-and-partition-foreign";
BehaviorPrivateBrowsing = "reject";
Locked = true;
};
DefaultDownloadDirectory = "\${home}/Downloads";
DisableAppUpdate = true;
DisableFirefoxAccounts = true;
DisableFirefoxScreenshots = true;
DisableFirefoxStudies = true;
DisableFormHistory = true;
DisablePocket = true;
DisableProfileImport = true;
DisableSetDesktopBackground = true;
DisableSystemAddonUpdate = true;
DisableTelemetry = true;
DisplayBookmarksToolbar = "never";
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";
};
"uBlock0@raymondhill.net" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
};
"addon@simplelogin" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/simplelogin/latest.xpi";
};
"{8446b178-c865-4f5c-8ccc-1d7887811ae3}" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/catppuccin-mocha-lavender-git/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 = true;
OfferToSaveLogins = false;
PasswordManagerEnabled = false;
PDFjs = {Enabled = false;};
Permissions = {
Autoplay = {
Default = "block-audio-video";
};
};
PictureInPicture = {Enabled = true;};
PopupBlocking = {Default = true;};
Preferences = {
"browser.bookmarks.addedImportButton" = false;
"browser.bookmarks.showMobileBookmarks" = false;
"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";
}
];
"browser.search.region" = "GB";
"browser.warnOnQuitShortcut" = false;
"extensions.activeThemeID" = "{c6698fd1-fe9b-4eae-95d5-fe1703820469}";
"intl.accept_languages" = "en-gb,en";
"intl.locale.requested" = "en-gb,en";
"intl.regional_prefs.use_os_locales" = false;
"media.eme.enabled" = true;
};
RequestedLocales = ["en-GB"];
SearchBar = "unified";
ShowHomeButton = true;
StartDownloadsInTempDirectory = true;
};
};
};
gtk.iconCache.enable = true;
qt = {
@ -81,7 +214,12 @@
dbus.packages = with pkgs; [gcr];
greetd = {
enable = true;
settings.initial_session = {inherit user;};
settings = let
command = "sway";
in {
initial_session = {inherit command;};
default_session = {inherit command;};
};
};
pipewire = {
enable = true;

View file

@ -1,60 +1,5 @@
{
"nodes": {
"base16": {
"inputs": {
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1709025227,
"narHash": "sha256-KXcORItjYJTdEO/BlBd0Uym1Xa3eBu43uvpFiWjJOdY=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "4e9b16c8b44958bc6bf46d99c3bb1b59c9c9c764",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "base16.nix",
"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"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1714043624,
"narHash": "sha256-Xn2r0Jv95TswvPlvamCC46wwNo8ALjRCMBJbGykdhcM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "86853e31dc1b62c6eeed11c667e8cdd0285d4411",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-23.11",
"repo": "home-manager",
"type": "github"
}
},
"iosevka-custom": {
"inputs": {
"nixpkgs": "nixpkgs"
@ -107,27 +52,8 @@
},
"root": {
"inputs": {
"base16": "base16",
"home-manager": "home-manager",
"iosevka-custom": "iosevka-custom",
"nixpkgs": "nixpkgs_2",
"tt-schemes": "tt-schemes"
}
},
"tt-schemes": {
"flake": false,
"locked": {
"lastModified": 1713388094,
"narHash": "sha256-wcotm0Ek2ISn8iJBzEujJQdcPLKWrPAOZ/dS/DLKafw=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "abcf2a055ae69f1bf047463332f83db3125aa8a5",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "schemes",
"type": "github"
"nixpkgs": "nixpkgs_2"
}
}
},

287
flake.nix
View file

@ -8,238 +8,99 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
home-manager = {
url = "github:nix-community/home-manager/release-23.11";
inputs.nixpkgs.follows = "nixpkgs";
};
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
base16.url = "github:SenchoPens/base16.nix";
tt-schemes = {
url = "github:tinted-theming/schemes";
flake = false;
};
};
outputs = {
nixpkgs,
home-manager,
iosevka-custom,
base16,
tt-schemes,
...
}: let
systemConfig = {
defaultSpecialArgs = {system ? "x86_64-linux", ...}: {
iosevkaCustom = {
packages = iosevka-custom.outputs.packages.${system};
names = iosevka-custom.outputs.names;
};
};
defaultModules = {
hostName ? "Atlas",
user ? "pixelifytica",
system ? "x86_64-linux",
stateVersion ? "23.05",
systemModules ? [],
homeModules ? [],
}: let
defaultUserShell = "zsh";
specialArgs = {
inherit hostName user;
accentColour = "base07"; # catppuccin lavender
catppuccinVariant = "Mocha";
fonts = with import nixpkgs {inherit system;};
with iosevka-custom.outputs; rec {
sizes = {
applications = 12;
desktop = 10;
popups = 14;
terminal = 12;
};
serif = sansSerif;
sansSerif = {
name = names."iosevka-custom-aile";
package = packages.${system}."iosevka-custom-aile";
};
monospace = {
name = names."iosevka-custom-nerdfont";
package = packages.${system}."iosevka-custom-nerdfont";
};
emoji = {
name = "Noto Color Emoji";
package = noto-fonts-emoji;
};
primaryUser ? "pixelifytica",
loginShell ? "zsh",
...
}: [
./configuration/default.nix
./configuration/${hostName}.nix
./hardware-configuration/${hostName}.nix
({
config,
lib,
...
}: {
networking = {inherit hostName;};
nix = {
settings.trusted-users = [primaryUser];
registry.nixpkgs.flake = nixpkgs;
};
};
in
nixpkgs.lib.nixosSystem {
inherit system specialArgs;
modules =
[
home-manager.nixosModules.home-manager
base16.nixosModule
./hosts/${hostName}/configuration.nix
./hosts/${hostName}/hardware-configuration.nix
./system/default.nix
({
config,
lib,
pkgs,
catppuccinVariant ? "Mocha",
...
}: {
scheme = "${tt-schemes}/base16/catppuccin-${lib.strings.toLower catppuccinVariant}.yaml";
nix = {
enable = true;
package = pkgs.nixVersions.unstable;
settings = {
cores = 0;
max-jobs = "auto";
trusted-users = ["root" user];
experimental-features = ["nix-command" "flakes"];
auto-optimise-store = true;
};
channel.enable = true;
nixPath = ["nixpkgs=${pkgs.path}"];
registry.nixpkgs.flake = nixpkgs;
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;
networking = {inherit hostName;};
programs.${defaultUserShell}.enable = true;
system = {inherit stateVersion;};
users = {
defaultUserShell = pkgs.${defaultUserShell};
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;};
${user} = {
group = "users";
isNormalUser = true;
description = "Evie Litherland-Smith";
extraGroups = ["networkmanager" "wheel" "video" "input" "uinput"];
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
openssh = {inherit authorizedKeys;};
};
};
};
home-manager = {
extraSpecialArgs = {inherit (config) scheme;} // specialArgs;
useGlobalPkgs = true;
useUserPackages = true;
users = {
root = {
imports = [./home/default.nix];
home = {
inherit stateVersion;
username = "root";
homeDirectory = "/root";
};
programs.home-manager.enable = true;
};
${user} = let
username = user;
homeDirectory = "/home/${user}";
in {
imports =
[./hosts/${hostName}/home.nix ./home/default.nix]
++ homeModules;
home = {inherit username homeDirectory stateVersion;};
programs.home-manager.enable = true;
xdg.userDirs = {
enable = true;
createDirectories = true;
extraConfig = {
XDG_PROJECTS_DIR = "${homeDirectory}/Projects";
};
};
};
};
};
})
]
++ systemModules;
};
programs.${loginShell}.enable = true;
users.users.${primaryUser} = {
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 {
nixosConfigurations = {
## Server
Legion = systemConfig {
hostName = "Legion";
systemModules = [
./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
];
homeModules = [./home/default.nix];
Legion = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = defaultSpecialArgs {inherit system;};
modules = defaultModules {
hostName = "Legion";
primaryUser = "pixelifytica";
loginShell = "zsh";
};
};
## Personal
Northstar = systemConfig {
hostName = "Northstar";
systemModules = [
./system/laptop.nix
./system/sway.nix
];
homeModules = [
./home/sway/default.nix
./home/email/work.nix
];
Northstar = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = defaultSpecialArgs {inherit system;};
modules = defaultModules {
hostName = "Northstar";
primaryUser = "pixelifytica";
loginShell = "zsh";
};
};
Vanguard = systemConfig {
hostName = "Vanguard";
systemModules = [
./system/desktop.nix
./system/games.nix
./system/sway.nix
];
homeModules = [
./home/sway/default.nix
./home/email/work.nix
];
Vanguard = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = defaultSpecialArgs {inherit system;};
modules = defaultModules {
hostName = "Vanguard";
primaryUser = "pixelifytica";
loginShell = "zsh";
};
};
## Work
Ronin = systemConfig {
hostName = "Ronin";
user = "elitherl";
systemModules = [
./system/laptop.nix
./system/sway.nix
];
homeModules = [
./home/sway/default.nix
./home/email/work.nix
];
Ronin = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = defaultSpecialArgs {inherit system;};
modules = defaultModules {
hostName = "Ronin";
primaryUser = "elitherl";
loginShell = "zsh";
};
};
Scorch = systemConfig {
hostName = "Scorch";
user = "elitherl";
systemModules = [
./system/desktop.nix
./system/sway.nix
];
homeModules = [
./home/sway/default.nix
./home/email/work.nix
];
Scorch = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = defaultSpecialArgs {inherit system;};
modules = defaultModules {
hostName = "Scorch";
primaryUser = "elitherl";
loginShell = "zsh";
};
};
};
};

View file

@ -1,75 +0,0 @@
[colors.primary]
background = "#1E1E2E"
foreground = "#CDD6F4"
dim_foreground = "#CDD6F4"
bright_foreground = "#CDD6F4"
[colors.cursor]
text = "#1E1E2E"
cursor = "#F5E0DC"
[colors.vi_mode_cursor]
text = "#1E1E2E"
cursor = "#B4BEFE"
[colors.search.matches]
foreground = "#1E1E2E"
background = "#A6ADC8"
[colors.search.focused_match]
foreground = "#1E1E2E"
background = "#A6E3A1"
[colors.footer_bar]
foreground = "#1E1E2E"
background = "#A6ADC8"
[colors.hints.start]
foreground = "#1E1E2E"
background = "#F9E2AF"
[colors.hints.end]
foreground = "#1E1E2E"
background = "#A6ADC8"
[colors.selection]
text = "#1E1E2E"
background = "#F5E0DC"
[colors.normal]
black = "#45475A"
red = "#F38BA8"
green = "#A6E3A1"
yellow = "#F9E2AF"
blue = "#89B4FA"
magenta = "#F5C2E7"
cyan = "#94E2D5"
white = "#BAC2DE"
[colors.bright]
black = "#585B70"
red = "#F38BA8"
green = "#A6E3A1"
yellow = "#F9E2AF"
blue = "#89B4FA"
magenta = "#F5C2E7"
cyan = "#94E2D5"
white = "#A6ADC8"
[colors.dim]
black = "#45475A"
red = "#F38BA8"
green = "#A6E3A1"
yellow = "#F9E2AF"
blue = "#89B4FA"
magenta = "#F5C2E7"
cyan = "#94E2D5"
white = "#BAC2DE"
[[colors.indexed_colors]]
index = 16
color = "#FAB387"
[[colors.indexed_colors]]
index = 17
color = "#F5E0DC"

View file

@ -1,30 +0,0 @@
{fonts, ...}: {
programs.alacritty = let
catppuccin-mocha = builtins.fromTOML (builtins.readFile ./catppuccin-mocha.toml);
in {
enable = true;
settings =
{
font = {
size = fonts.sizes.applications;
normal = {
family = fonts.monospace.name;
style = "Regular";
};
};
window = {
opacity = 0.8;
dynamic_title = true;
padding = {
x = 10;
y = 10;
};
decorations = "none";
};
live_config_reload = false;
selection.save_to_clipboard = true;
mouse.hide_when_typing = false;
}
// catppuccin-mocha;
};
}

View file

@ -1,22 +0,0 @@
{
scheme,
accentColour ? "base07",
...
}: {
services.avizo = {
enable = true;
settings.default = with scheme; let
accent = {
r = scheme."${accentColour}-rgb-r";
g = scheme."${accentColour}-rgb-g";
b = scheme."${accentColour}-rgb-b";
};
in {
background = "rgba(${base00-rgb-r}, ${base00-rgb-g}, ${base00-rgb-b}, 0.8)";
bar-bg-color = "rgba(${base00-rgb-r}, ${base00-rgb-g}, ${base00-rgb-b}, 0.8)";
bar-fg-color = "rgba(${base05-rgb-r}, ${base05-rgb-g}, ${base05-rgb-b}, 1.0)";
border-color = "rgba(${accent.r}, ${accent.g}, ${accent.b}, 1.0)";
image-opacity = "1.0";
};
};
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,21 +0,0 @@
{
lib,
catppuccinVariant ? "Mocha",
...
}: {
xdg.configFile = let
variants = ["Latte" "Frappe" "Macchiato" "Mocha"];
mkVariant = variant: let
fname = "catppuccin${variant}.tmTheme";
in {
name = "bat/themes/${fname}";
value = {source = ./. + "/${fname}";};
};
in
builtins.listToAttrs
(lib.lists.forEach variants mkVariant);
programs.bat = {
enable = true;
config.theme = "catppuccin${catppuccinVariant}";
};
}

View file

@ -1,35 +0,0 @@
{
scheme,
accentColour ? "base07",
...
}: {
programs.bottom = {
enable = true;
settings.colors = with scheme.withHashtag; let
rainbow = [red yellow green cyan blue magenta];
in {
table_header_color = base05;
all_cpu_color = base05;
avg_cpu_color = base05;
cpu_core_colors = rainbow;
ram_color = red;
cache_color = green;
swap_color = blue;
rx_color = green;
tx_color = blue;
widget_title_color = scheme.withHashtag.${accentColour};
border_color = base02;
highlighted_border_color = scheme.withHashtag.${accentColour};
text_color = base05;
graph_color = base04;
cursor_color = base02;
selected_text_color = base05;
selected_bg_color = base01;
high_battery_color = green;
medium_battery_color = yellow;
low_battery_color = red;
gpu_core_colors = rainbow;
arc_color = cyan;
};
};
}

View file

@ -1,17 +0,0 @@
{scheme, ...}: {
programs.cava = {
enable = true;
settings = {
color = with scheme.withHashtag; {
gradient = 1;
gradient_count = 6;
gradient_color_1 = "'${red}'";
gradient_color_2 = "'${yellow}'";
gradient_color_3 = "'${green}'";
gradient_color_4 = "'${cyan}'";
gradient_color_5 = "'${blue}'";
gradient_color_6 = "'${magenta}'";
};
};
};
}

View file

@ -1,40 +0,0 @@
{pkgs, ...}: {
imports = [
./bat/default.nix
./git/default.nix
./ssh/default.nix
./zsh/default.nix
./starship/default.nix
./bottom/default.nix
./emacs/default.nix
./scripts/default.nix
];
programs = {
bash.enable = true;
carapace.enable = true;
eza = {
enable = true;
enableAliases = true;
git = true;
icons = true;
extraOptions = ["--octal-permissions"];
};
readline = {
enable = true;
includeSystemConfig = true;
extraConfig = ''
set completion-ignore-case On
'';
};
direnv = {
enable = true;
nix-direnv.enable = true;
};
fzf = {
enable = true;
defaultCommand = "${pkgs.fd}/bin/fd --type f";
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
};
};
}

View file

@ -1,87 +0,0 @@
{
lib,
config,
pkgs,
scheme,
catppuccinVariant ? "Mocha",
...
}: {
imports = [
./default.nix
./email/default.nix
./password-store/default.nix
./wlogout/default.nix
./waybar/default.nix
./rofi/default.nix
./swaylock/default.nix
./swaync/default.nix
./avizo/default.nix
./alacritty/default.nix
./emacs/default.nix
./nyxt/default.nix
./obs/default.nix
./cava/default.nix
./prog/default.nix
];
programs.rofi.terminal = "${config.programs.alacritty.package}/bin/alacritty";
services = {
gpg-agent.pinentryFlavor = "gtk2";
avizo.enable = true;
syncthing.enable = true;
udiskie = {
enable = true;
notify = true;
automount = true;
tray = "never";
};
};
gtk = with lib.strings; let
accent = "Lavender";
size = "Standard";
in {
enable = true;
iconTheme = {
package = pkgs.catppuccin-papirus-folders.override {
accent = toLower accent;
flavor = toLower catppuccinVariant;
};
name = "Papirus-Dark";
};
cursorTheme = let
variant = "${lib.strings.toLower catppuccinVariant}Dark";
in {
package = pkgs.catppuccin-cursors.${variant};
name = "Catppuccin-${catppuccinVariant}-Dark-Cursors";
size = 32;
};
theme = {
package = with lib.strings;
pkgs.catppuccin-gtk.override {
accents = [(toLower accent)];
size = toLower size;
variant = toLower catppuccinVariant;
};
name = "Catppuccin-${catppuccinVariant}-${size}-${accent}-Dark";
};
};
xresources.properties = with scheme.withHashtag; {
"*background" = base00;
"*foreground" = base05;
"*color0" = base00;
"*color1" = red;
"*color2" = green;
"*color3" = yellow;
"*color4" = blue;
"*color5" = magenta;
"*color6" = cyan;
"*color7" = base04;
"*color8" = base01;
"*color9" = red;
"*color10" = green;
"*color11" = yellow;
"*color12" = blue;
"*color13" = magenta;
"*color14" = cyan;
"*color15" = base05;
};
}

View file

@ -1,172 +0,0 @@
{
config,
pkgs,
fonts,
...
}: {
imports = [../git/default.nix];
programs.git.extraConfig.core.editor = "$EDITOR";
programs.emacs = {
# Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git
# git clone https://git.xenia.me.uk/pixelifytica/emacs.git ~/.config/emacs
enable = true;
package = pkgs.emacs29-pgtk;
extraConfig = let
shell = "${pkgs.zsh}/bin/zsh";
font = "${fonts.monospace.name}-${toString fonts.sizes.applications}";
fixed-font-family = "${fonts.monospace.name}";
variable-font-family = "${fonts.sansSerif.name}";
alpha = "80";
in ''
(customize-set-variable 'shell-file-name "${shell}")
(add-to-list 'initial-frame-alist '(font . "${font}"))
(add-to-list 'default-frame-alist '(font . "${font}"))
(set-face-attribute 'fixed-pitch nil :family "${fixed-font-family}")
(set-face-attribute 'fixed-pitch-serif nil :family "${fixed-font-family}")
(set-face-attribute 'variable-pitch nil :family "${variable-font-family}")
(add-to-list 'initial-frame-alist '(alpha-background . ${alpha}))
(add-to-list 'default-frame-alist '(alpha-background . ${alpha}))
(scroll-bar-mode -1)
(tab-bar-mode -1)
(menu-bar-mode -1)
'';
extraPackages = epkgs:
with epkgs; [
# Theme
base16-theme
# UI
all-the-icons
nerd-icons
nerd-icons-completion
nerd-icons-corfu
nerd-icons-dired
nerd-icons-ibuffer
doom-modeline
diminish
ligature
page-break-lines
helpful
which-key
link-hint
diff-hl
# Completion
cape
consult
consult-eglot
consult-flyspell
corfu
corfu-terminal
embark
embark-consult
marginalia
orderless
vertico
# Snippets
tempel
tempel-collection
# spell-checking
flyspell-correct
# password-store
pass
password-store
password-store-otp
# IDE
treesit-grammars.with-all-grammars
treesit-auto
flymake-popon
flymake-collection
flymake-eslint
flymake-shellcheck
apheleia
direnv
rainbow-delimiters
aggressive-indent
nix-mode
python-docstring
# Media
emms
# org-mode
org-roam
org-noter
org-journal
# org-cite
citar
citar-embark
# org-plot
gnuplot
# org-mode HTML export
htmlize
# Projects
ibuffer-project
magit
forge
# Writing
markdown-mode
pandoc-mode
auctex
auctex-latexmk
latex-preview-pane
# Email
mu4e
# RSS feeds
elfeed
elfeed-org
elfeed-tube
];
};
services = {
emacs = {
enable = true;
package = config.programs.emacs.finalPackage;
defaultEditor = true;
client.enable = true;
socketActivation.enable = true;
startWithUserSession = false;
};
git-sync.repositories = with config.xdg.userDirs; {
org = {
path = "${documents}/Org";
uri = "git+https://git.xenia.me.uk/xenia/org.git";
};
references = {
path = "${documents}/References";
uri = "git+https://git.xenia.me.uk/xenia/references.git";
};
};
};
home.packages = with pkgs; [
# Emacs requirements
imagemagick
languagetool
wordnet
gnuplot # For org-plot
graphviz # For org-roam graph
mp3info # For EMMS
# Language-specific requirements
sqlite
pandoc
ghostscript
poppler_utils
# Customised LaTeX install
(texlive.combine {
inherit (pkgs.texlive) scheme-medium dvisvgm dvipng wrapfig amsmath ulem hyperref capt-of;
})
];
}

View file

@ -1,39 +0,0 @@
davmail.server=true
davmail.mode=O365Manual
davmail.url=https://outlook.office365.com/EWS/Exchange.asmx
davmail.imapPort=1144
davmail.smtpPort=1026
davmail.caldavPort=1080
davmail.enableKeepAlive=true
davmail.logFilePath=/tmp/davmail.log
davmail.enableKerberos=false
davmail.forceActiveSyncUpdate=false
davmail.imapAutoExpunge=true
davmail.useSystemProxies=false
davmail.caldavEditNotifications=false
davmail.ssl.nosecuresmtp=false
davmail.caldavPastDelay=0
log4j.logger.httpclient.wire=WARN
davmail.popMarkReadOnRetr=false
davmail.ssl.nosecureimap=false
davmail.disableTrayActivitySwitch=true
davmail.caldavAutoSchedule=true
davmail.enableProxy=false
davmail.smtpSaveInSent=false
davmail.ssl.nosecurepop=false
log4j.rootLogger=WARN
log4j.logger.davmail=DEBUG
davmail.ssl.clientKeystorePass=
log4j.logger.org.apache.http.conn.ssl=WARN
davmail.sentKeepDelay=0
davmail.ssl.nosecureldap=false
davmail.imapAlwaysApproxMsgSize=true
davmail.ssl.nosecurecaldav=false
davmail.showStartupBanner=false
log4j.logger.httpclient=WARN
log4j.logger.org.apache.http.wire=WARN
davmail.disableGuiNotifications=true
davmail.disableUpdateCheck=true
log4j.logger.org.apache.http=WARN
davmail.carddavReadPhoto=true
davmail.keepDelay=30

View file

@ -1,81 +0,0 @@
{
pkgs,
hostName,
...
}: {
accounts.email = {
maildirBasePath = "Mail";
accounts = let
realName = "Evie Litherland-Smith";
in {
proton = let
host = "127.0.0.1";
tls.enable = false;
in rec {
inherit realName;
primary = true;
maildir.path = "Proton";
imap = {
inherit host tls;
port = 1143;
};
smtp = {
inherit host tls;
port = 1025;
};
address = "e.litherlandsmith@proton.me";
aliases = ["evie@xenia.me.uk" "evie@litherlandsmith.slmail.me"];
userName = address;
passwordCommand = "${pkgs.pass}/bin/pass show mbsync/${hostName}/proton | head -n1";
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 = rec {
inherit realName;
primary = false;
maildir.path = "iCloud";
imap.host = "imap.mail.me.com";
smtp.host = "smtp.mail.me.com";
address = "e.litherlandsmith@icloud.com";
userName = address;
passwordCommand = "${pkgs.pass}/bin/pass show mbsync/${hostName}/icloud | head -n1";
mu.enable = true;
msmtp.enable = true;
mbsync = {
enable = true;
create = "both";
expunge = "both";
remove = "both";
patterns = ["*" "!Notes"];
subFolders = "Verbatim";
};
};
};
};
programs = {
mu.enable = true;
msmtp.enable = true;
mbsync = {
enable = true;
groups.inboxes = {
proton = ["INBOX"];
icloud = ["INBOX"];
};
};
};
}

View file

@ -1,3 +0,0 @@
--
Evelyn Litherland-Smith (she/they)
email: evie@xenia.me.uk

View file

@ -1,5 +0,0 @@
--
Evelyn Litherland-Smith (she/they)
Spectroscopy Diagnostic Physicist
Plasma Science and Fusion Operations
UK Atomic Energy Authority

View file

@ -1,69 +0,0 @@
{
config,
pkgs,
hostName,
...
}: {
imports = [./default.nix];
accounts.email.accounts.outlook = let
host = "127.0.0.1";
tls.enable = false;
in rec {
inherit (config.accounts.email.accounts.proton) realName;
primary = false;
maildir.path = "Outlook";
imap = {
inherit host tls;
port = 1144;
};
smtp = {
inherit host tls;
port = 1026;
};
address = "evie.litherland-smith@ukaea.uk";
aliases = ["elitherl@jet.uk"];
userName = address;
passwordCommand = "${pkgs.pass}/bin/pass show mbsync/${hostName}/outlook | head -n1";
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.mbsync.groups.inboxes.outlook = ["INBOX"];
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"];
};
}

View file

@ -1,13 +0,0 @@
(defwindow example
:monitor 0
:geometry (geometry :x "0%"
:y "20px"
:width "90%"
:height "30px"
:anchor "top center")
:stacking "overlay"
:reserve (struts :distance "40px" :side "top")
:windowtype "dock"
:wm-ignore false
:namespace eww-example
"example content")

View file

@ -1,12 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
programs.eww = {
enable = true;
package = pkgs.eww-wayland;
configDir = ./config;
};
}

View file

@ -1,48 +0,0 @@
{
fonts,
scheme,
...
}: {
programs.foot = {
enable = true;
server.enable = true;
settings = {
main = {
# term = "xterm-256color";
title = "foot";
locked-title = "no";
font = with fonts; "${monospace.name}:size=${toString sizes.applications}";
dpi-aware = "no";
pad = "10x10";
};
bell = {
urgent = "no";
notify = "no";
visual = "no";
};
cursor = {blink = "yes";};
mouse = {hide-when-typing = "no";};
colors = with scheme; rec {
alpha = 0.8;
background = base00;
foreground = base05;
regular0 = base02;
regular1 = red;
regular2 = green;
regular3 = yellow;
regular4 = blue;
regular5 = magenta;
regular6 = cyan;
regular7 = base05;
bright0 = base03;
bright1 = regular1;
bright2 = regular2;
bright3 = regular3;
bright4 = regular4;
bright5 = regular5;
bright6 = regular6;
bright7 = base04;
};
};
};
}

View file

@ -1,39 +0,0 @@
{
config,
lib,
...
}: {
services.git-sync.enable = false; # Can't find pass for some reason...
programs.git = {
enable = true;
userName = "Evie Litherland-Smith";
userEmail = lib.mkDefault "evie@xenia.me.uk";
delta = {
enable = true;
options = {
line-numbers = true;
hyprlinks = true;
navigate = true;
side-by-side = true;
syntax-theme = with config.programs; lib.mkIf bat.enable bat.config.theme;
};
};
attributes = [
"*.gpg filter=gpg diff=gpg"
"*.asc filter=gpg diff=gpg"
];
extraConfig = let
user = "pixelifytica";
in {
github = {inherit user;};
gitea = {inherit user;};
pull.rebase = false;
init.defaultBranch = "main";
merge.conflictstyle = "diff3";
diff = {
colorMoved = "default";
gpg.textconv = "gpg --no-tty --decrypt";
};
};
};
}

View file

@ -1,398 +0,0 @@
{
config,
lib,
pkgs,
fonts,
scheme,
accentColour ? "base07",
...
}: {
imports = [../desktop.nix];
home.packages = with pkgs; [
(writeShellScriptBin "protonmail-setup-bridge" ''
pkill -9 -f protonmail-bridge
${protonmail-bridge}/bin/protonmail-bridge -c
${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl dispatch exec "${protonmail-bridge}/bin/protonmail-bridge -n"
'')
];
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
systemd.enable = true;
settings = {
monitor = [",preferred,auto,auto"];
env = with config; [
"XDG_CURRENT_DESKTOP=Hyprland"
"XDG_SESSION_TYPE=wayland"
"XDG_SESSION_DESKTOP=Hyprland"
"GDK_BACKEND=wayland,x11"
"GTK_THEME,${gtk.theme.name}"
"XCURSOR_THEME,${gtk.cursorTheme.name}"
"XCURSOR_SIZE,${toString gtk.cursorTheme.size}"
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
"QT_QPA_PLATFORM,wayland"
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
"MOZ_ENABLE_WAYLAND,1"
"GRIM_DEFAULT_DIR=${xdg.userDirs.pictures}/Grim"
];
exec-once = with config; [
"systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME"
"${wayland.windowManager.hyprland.finalPackage}/bin/hyprctl setcursor ${gtk.cursorTheme.name} ${toString gtk.cursorTheme.size}"
"${pkgs.swaynotificationcenter}/bin/swaync"
"${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
"${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
"${pkgs.waybar}/bin/waybar"
"${pkgs.hyprpaper}/bin/hyprpaper"
];
gestures.workspace_swipe = true;
input = {
kb_layout = "gb";
kb_options = "ctrl:nocaps";
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 = with scheme; {
"col.active_border" = "rgb(${scheme.${accentColour}})";
"col.inactive_border" = "rgb(${base03})";
gaps_in = 5;
gaps_out = 10;
border_size = 1;
cursor_inactive_timeout = 0;
layout = "dwindle";
};
decoration = with scheme; {
rounding = 10;
"col.shadow" = "rgba(0d${base00})";
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 = [
"waybar"
"system-menu"
"rofi"
"gtk-layer-shell"
"notifications"
"swaync-.*"
"avizo"
];
in
(lib.lists.forEach layers blur)
++ (lib.lists.forEach layers ignorealpha);
windowrule = [
# Workspace binds
"workspace 3, (libreoffice|soffice)(.*)"
"workspace 4, (WebCord|signal)"
"workspace 5, org.prismlauncher.PrismLauncher"
"workspace 5 silent, steam" # Keep silent to avoid popups taking focus
# Float + move system windows
"float, org.kde.polkit-kde-authentication-agent-1|Pinentry"
"center, org.kde.polkit-kde-authentication-agent-1|Pinentry"
"pin, org.kde.polkit-kde-authentication-agent-1|Pinentry"
"dimaround, org.kde.polkit-kde-authentication-agent-1|Pinentry"
"stayfocused, org.kde.polkit-kde-authentication-agent-1|Pinentry"
"float, pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
"size 800 600, pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
"move onscreen 100%-820 60,pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
# 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"
# Thunar extra windows
"float, title:File Operation Progress,class:thunar"
"size 800 600, title:File Operation Progress,class:thunar"
"center, title:File Operation Progress,class:thunar"
# LibreOffice
"nofullscreenrequest, class:(libreoffice|soffice)(.*)"
"nomaximizerequest, 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"
# X2Go / Remmina / NoMachine
"nofullscreenrequest, class:x2goclient|org.remmina.Remmina|Nxplayer.bin"
"nomaximizerequest, class:x2goclient|org.remmina.Remmina|Nxplayer.bin"
"float, title:(X2Go Client|Freia|Heimdall), class:x2goclient"
"float, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
"float, title:(NoMachine)(.*), class:Nxplayer.bin"
"center, title:(X2Go Client|Freia|Heimdall), class:x2goclient"
"center, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
"center, title:(NoMachine)(.*), class:Nxplayer.bin"
"size 800 600, title:X2Go Client, class:x2goclient"
"size 1920 1080, title:Freia|Heimdall, class:x2goclient"
"size 1920 1080, title:(NoMachine)(.*), class:Nxplayer.bin"
];
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
with config.programs;
with lib.lists;
flatten (forEach (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/$(hyprctl version -j | ${pkgs.jq}/bin/jq $args.commit | ${pkgs.gnused}/bin/sed s/v// | ${pkgs.gnused}/bin/sed s/\\\"//g)\""
# "SUPER, F1, exec, ${pkgs.hyprlock}/bin/hyprlock" # Until added to nixpkgs
"SUPER, F1, exec, ${swaylock.package}/bin/swaylock --screenshots --clock --indicator --grace-no-mouse"
"SUPER, Q, killactive,"
"SUPER SHIFT, Q, exec, pkill rofi || ${rofi.finalPackage}/bin/rofi -show powermenu -modi powermenu:${pkgs.rofi-power-menu}/bin/rofi-power-menu"
"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, ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw"
"SUPER SHIFT, Z, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw"
# Common program shortcuts
"SUPER, Return, exec, ${alacritty.package}/bin/alacritty"
"SUPER, E, exec, ${emacs.finalPackage}/bin/emacsclient -c"
"SUPER, W, exec, ${firefox.package}/bin/firefox"
"SUPER, F, exec, ${pkgs.xfce.thunar}/bin/thunar"
# Rofi binds
"SUPER, Space, exec, pkill rofi || ${rofi.finalPackage}/bin/rofi -show drun"
"SUPER, tab, exec, pkill rofi || ${rofi.finalPackage}/bin/rofi -show window"
"SUPER, A, exec, pkill rofi || ${rofi.finalPackage}/bin/rofi -show emoji"
# rofi-pass binds
"SUPER, P, exec, pkill rofi || ${rofi.pass.package}/bin/rofi-pass"
"SUPER SHIFT, P, exec, pkill rofi || ${rofi.pass.package}/bin/rofi-pass --last-used"
"SUPER ALT, P, exec, pkill rofi || ${rofi.pass.package}/bin/rofi-pass --insert"
# Terminal utilities
"SUPER, S, exec, ${withTerm {
progname = "btm";
args = btm_args;
}}"
"SUPER SHIFT, S, exec, ${withTerm {
progname = "btm";
args = btm_args + " --basic";
}}"
"SUPER, C, exec, ${withTerm {progname = "cava";}}"
# Misc useful binds
'',Print,exec,${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)"''
",XF86Calculator,exec,pkill rofi || ${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 = with config.services; [
# Sound
",XF86AudioMute,exec,${avizo.package}/bin/volumectl %"
",XF86AudioMicMute,exec,${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 = with config.services; [
# Sound
",XF86AudioRaiseVolume,exec,${avizo.package}/bin/volumectl -u + 5"
",XF86AudioLowerVolume,exec,${avizo.package}/bin/volumectl -u - 5"
# Brightness
",XF86MonBrightnessUp,exec,${avizo.package}/bin/lightctl + 5"
",XF86MonBrightnessDown,exec,${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 = let
image = ../../wallpapers/waves/cat-waves.png;
in ''
preload = ${image}
wallpaper = ,${image}
'';
"hypr/hyprlock.conf".text = with scheme; let
font = fonts.sansSerif.name;
accent = scheme.${accentColour};
in ''
# GENERAL
general {
disable_loading_bar = true
hide_cursor = true
}
# BACKGROUND
background {
monitor =
path = screenshot
blur_passes = 3
color = 0xff${accent}
}
# TIME
label {
monitor =
text = cmd[update:30000] echo "$(date +"%R")"
color = 0xff${base05}
font_size = 90
font_family = ${font}
position = -30, 0
halign = right
valign = top
}
# DATE
label {
monitor =
text = cmd[update:43200000] echo "$(date +"%A,%e %B %Y")"
color = 0xff${base05}
font_size = 25
font_family = ${font}
position = -30, -150
halign = right
valign = top
}
# USER
image {
monitor =
path = ${../../picrew.png}
size = 100
border_color = 0xff${accent}
position = 0, 75
halign = center
valign = center
}
# INPUT FIELD
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${base00}
font_color = 0xff${base05}
fade_on_empty = false
placeholder_text = <span foreground="##${base04}"><i>󰌾 Logged in as </i><span foreground="##${accent}">$USER</span></span>
hide_input = false
position = 0, -50
halign = center
valign = center
}
'';
};
}

View file

@ -1,7 +0,0 @@
$env.config = {
show_banner: false,
edit_mode: emacs,
table: {
mode: rounded,
},
}

View file

@ -1,7 +0,0 @@
{...}: {
programs.nushell = {
enable = true;
envFile.source = ./env.nu;
configFile.source = ./config.nu;
};
}

View file

@ -1,2 +0,0 @@
$env.TRANSIENT_PROMPT_COMMAND = "> "
$env.PAGER = "bat"

View file

@ -1,122 +0,0 @@
(
;; Personal
;; Messaging
( :url "https://web.whatsapp.com/"
:title "WhatApp Web"
:tags ("personal" "messaging"))
( :url "https://discord.com/app"
:title "Discord"
:tags ("personal" "messaging"))
;; Server
( :url "https://xenia.me.uk"
:title "Home Page"
:tags ("personal" "server"))
( :url "https://git.xenia.me.uk"
:title "Forgejo"
:tags ("personal" "server" "dev" "git"))
( :url "https://blog.xenia.me.uk"
:title "Blog"
:tags ("personal" "server"))
;; Dev
( :url "https://github.com"
:title "GitHub"
:tags ("personal" "dev" "git"))
;; EV
( :url "https://abetterrouteplanner.com/"
:title "ABRP - A Better Route Planner"
:tags ("personal" "ev" "map"))
;; Documentation
( :url "https://nixos-and-flakes.thiscute.world/"
:title "NixOS and Flakes"
:tags ("personal" "documentation"))
( :url "https://nix-community.github.io/home-manager/options.xhtml"
:title "Home Manager Configuration Options"
:tags ("personal" "documentation"))
( :url "https://mipmip.github.io/home-manager-option-search/"
:title "Home Manager Option Search"
:tags ("personal" "documentation"))
;; Awesome Repos
( :url "https://github.com/emacs-tw/awesome-emacs"
:title "Awesome Emacs"
:tags ("personal" "awesome" "git"))
;; Miscellaneous
( :url "https://www.colorhexa.com/"
:title "Colour Encyclopedia"
:tags ("personal" "miscellaneous"))
;; Work
( :url "https://nucleus.ukaea.uk/"
:title "Nucleus"
:tags ("work"))
( :url "https://marval.service.ukaea.uk/MSMSelfService/Index.aspx"
:title "Marval Helpdesk"
:tags ("work"))
( :url "https://ubw.unit4cloud.com/uk_aea_prod_web/Login/Login.aspx"
:title "Unit4 Business World"
:tags ("work"))
;; Dev
( :url "https://git.ccfe.ac.uk/"
:title "GitLab (CCFE)"
:tags ("work" "dev" "git"))
;; JET
( :url "http://w3.jet.uk/"
:title "JET Homepage"
:tags ("work" "jet"))
( :url "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php"
:title "JET Physics Summary"
:tags ("work" "jet"))
( :url "https://www.jspo.jet.uk/pages/operations/jpecreports_2023.html"
:title "JSPO JPEC Reports"
:tags ("work" "jet"))
( :url "https://dvcm.jetdata.eu/"
:title "DVCM Homepage"
:tags ("work" "jet"))
;; JET Data Services
( :url "https://data.jet.uk/"
:title "JET Data Services"
:tags ("work" "jet" "data"))
( :url "https://data.jet.uk/ppf/browse/ppfquery"
:title "PPF Query"
:tags ("work" "jet" "data"))
( :url "https://data.jet.uk/reqco/myrequests"
:title "ReqCo"
:tags ("work" "jet" "data"))
;; MAST-U
( :url "https://users.mastu.ukaea.uk/home"
:title "MAST-U Users Page"
:tags ("work" "mast-u"))
( :url "https://intranet.ccfe.ac.uk/mastu-handbook"
:title "MAST-U Diagnostic Handbook"
:tags ("work" "mast-u"))
;; OpenWiki
( :url "https://wiki.jetdata.eu/open/index.php?title=Main_Page"
:title "OpenWiki Homepage"
:tags ("work" "openwiki"))
( :url "https://wiki.jetdata.eu/open/index.php?title=Diagnostic_Coordinator_Wiki"
:title "Diagnostic Coordinator Wiki"
:tags ("work" "openwiki"))
( :url "https://wiki.jetdata.eu/open/index.php?title=Spectroscopy_Group:index"
:title "Spectroscopy Group Wiki"
:tags ("work" "openwiki"))
( :url "https://wiki.jetdata.eu/open/index.php?title=CXS:Topic3"
:title "KS5 Wiki"
:tags ("work" "openwiki"))
( :url "https://wiki.jetdata.eu/open/index.php?title=KT3_Journals"
:title "KT3 Wiki"
:tags ("work" "openwiki"))
;; Office
( :url "https://outlook.office.com/calendar/view/workweek"
:title "Outlook Calendar"
:tags ("work" "microsoft" "office"))
( :url "https://teams.microsoft.com/v2"
:title "Microsoft Teams"
:tags ("work" "microsoft" "office"))
( :url "https://ukaeauk-my.sharepoint.com/personal/evie_litherland-smith_ukaea_uk/"
:title "OneDrive"
:tags ("work" "microsoft" "office"))
( :url "https://ukaeauk.sharepoint.com/"
:title "Sharepoint"
:tags ("work" "microsoft" "office"))
)

View file

@ -1,64 +0,0 @@
(define-configuration buffer
((default-modes
(pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))
(default-modes
(pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))))
(define-configuration status-buffer
((glyph-mode-presentation-p t)
(display-tabs-by-last-access-p nil)))
(define-configuration :emacs-mode ((glyph "ε")))
(define-configuration :force-https-mode ((glyph "ϕ")))
(define-configuration :user-script-mode ((glyph "u")))
(define-configuration :blocker-mode ((glyph "β")))
(define-configuration :proxy-mode ((glyph "π")))
(define-configuration :reduce-tracking-mode ((glyph "τ")))
(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
'("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/")
'("python" "https://docs.python.org/3/search.html?q=~a" "https://docs.python.org/3")
'("pypi" "https://pypi.org/search/?q=~a" "https://pypi.org/")
'("mynix" "https://mynixos.com/search?q=~a" "https://mynixos.com/")
'("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/")
'("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://duckduckgo.com/?q=~a" "https://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 t)))
(setf (uiop/os:getenv "GTK_THEME") "Adwaita:dark")

View file

@ -1,41 +0,0 @@
{
pkgs,
fonts,
scheme,
accentColour ? "base07",
...
}: {
xdg = {
configFile = {
"nyxt/config.lisp".text = with scheme.withHashtag; ''
;; Import custom configuration
(nyxt::load-lisp "${./config.lisp}")
;; Define custom theme
(define-configuration browser
((theme (make-instance 'theme:theme
:dark-p t
:font-family "${fonts.sansSerif.name}"
:monospace-font-family "${fonts.monospace.name}"
:background-color "${base00}"
:on-background-color "${base05}"
:primary-color "${scheme.withHashtag.${accentColour}}"
:on-primary-color "${base01}"
:secondary-color "${base03}"
:on-secondary-color "${base05}"
:accent-color "${cyan}"
:on-accent-color "${base01}"
:action-color "${cyan}"
:on-action-color "${base01}"
:success-color "${green}"
:on-success-color "${base01}"
:highlight-color "${magenta}"
:on-highlight-color "${base01}"
:warning-color "${yellow}"
:on-warning-color "${base01}"
:codeblock-color "${base02}"
:on-codeblock-color "${base05}"))))
'';
};
dataFile."nyxt/bookmarks.lisp".source = ./bookmarks.lisp;
};
}

View file

@ -1,12 +0,0 @@
{pkgs, ...}: {
home.packages = with pkgs; [helvum];
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-vkcapture
obs-pipewire-audio-capture
input-overlay
];
};
}

View file

@ -1,41 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
xdg.configFile."pass-git-helper/git-pass-mapping.ini".source =
./git-pass-mapping.ini;
programs = {
gpg.enable = true;
password-store = {
enable = true;
package =
pkgs.pass-nodmenu.withExtensions
(exts: with exts; [pass-otp pass-update pass-import]); # pass-audit
settings = {
PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store";
PASSWORD_STORE_ENABLE_EXTENSIONS = "true";
};
};
git.extraConfig.credential = {
helper = "${pkgs.pass-git-helper}/bin/pass-git-helper";
};
};
services = {
gpg-agent = rec {
enable = true;
maxCacheTtl = 86400;
defaultCacheTtl = maxCacheTtl;
defaultCacheTtlSsh = maxCacheTtl;
pinentryFlavor = lib.mkDefault "curses";
extraConfig = ''
no-allow-external-cache
'';
};
git-sync.repositories.password-store = {
path = "${config.home.homeDirectory}/.password-store";
uri = "git+https://git.xenia.me.uk/xenia/pass.git";
};
};
}

View file

@ -1,6 +0,0 @@
[DEFAULT]
username_extractor=regex_search
regex_username=^login: (.*)$
[*]
target=git/${host}

View file

@ -1,38 +0,0 @@
{
stdenvNoCC,
fetchFromGitHub,
gtk3,
libsForQt5,
gnome,
hicolor-icon-theme,
}:
stdenvNoCC.mkDerivation rec {
pname = "candy-icon-theme";
version = "6a35be5cb133c6be8314807f55da3d795e24fb86";
dontBuild = true;
src = fetchFromGitHub {
owner = "EliverLara";
repo = "candy-icons";
rev = version;
sha256 = "sha256-M58ts/xyVf+ZDidd4MEp/LlU3vk2imEwOnb0/sVJUYo=";
};
nativeBuildInputs = [gtk3];
buildInputs = [libsForQt5.breeze-icons gnome.adwaita-icon-theme hicolor-icon-theme];
dontDropIconThemeCache = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/icons/Sweet-folders
mv * $out/share/icons/Sweet-folders
for theme in $out/share/icons/*; do
gtk-update-icon-cache --force $theme
done
runHook postInstall
'';
}

View file

@ -1,46 +0,0 @@
{
stdenvNoCC,
fetchFromGitHub,
gtk3,
candy-icon-theme,
gnome-icon-theme,
ubuntu-themes,
cinnamon,
elementary-xfce-icon-theme,
}:
stdenvNoCC.mkDerivation rec {
pname = "sweet-folder-theme";
version = "b2192ff1412472f036fdf9778c6b9dbcb6c044ec";
dontBuild = true;
src = fetchFromGitHub {
owner = "EliverLara";
repo = "Sweet-folders";
rev = version;
sha256 = "sha256-QexfqXH5a1IEhKBRjWSMdrEvThvLRzd4M32Xti1DCGE=";
};
nativeBuildInputs = [gtk3];
buildInputs = [
candy-icon-theme
gnome-icon-theme
ubuntu-themes
cinnamon.mint-x-icons
elementary-xfce-icon-theme
];
dontDropIconThemeCache = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/icons
mv Sweet-Rainbow $out/share/icons
for theme in $out/share/icons/*; do
gtk-update-icon-cache --force $theme
done
runHook postInstall
'';
}

View file

@ -1,25 +0,0 @@
{pkgs, ...}: {
xdg.configFile = {
"ruff/pyproject.toml".source = ./ruff.toml;
"pypoetry/config.toml".source = ./pypoetry.toml;
};
home.packages = with pkgs; [
# Nix
nil
alejandra
# Shell
shfmt
shellcheck
nodePackages.prettier
# Python
(python3.withPackages
(ps: with ps; [python-lsp-server flake8 mypy]))
black
isort
# FORTRAN
fortls
];
}

View file

@ -1,17 +0,0 @@
{
"Application": { "log_datefmt": "%Y-%m-%d %H:%M:%S" },
"InteractiveShell": {
"colors": "Linux",
"color_info": true
},
"InteractiveShellApp": {
"exec_PYTHONSTARTUP": false,
"exec_lines": ["%load_ext autoreload", "%autoreload 2 --print"]
},
"TerminalIPythonApp": { "display_banner": false },
"TerminalInteractiveShell": {
"editing_mode": "emacs",
"mouse_support": false,
"true_color": true
}
}

View file

@ -1,3 +0,0 @@
c.SlidesExporter.exclude_input = True
c.SlidesExporter.reveal_scroll = True
c.PDFExporter.latex_command = ["pdflatex", "{filename}"]

View file

@ -1,17 +0,0 @@
import os
from pathlib import Path
root_dir = Path(os.getenv("HOME", Path("~/").expanduser().resolve()))
c.ServerApp.port = 8888
c.ServerApp.root_dir = str(root_dir)
c.FileCheckpoints.checkpoint_dir = str(root_dir / ".ipynb_checkpoints")
c.ServerApp.use_redirect_file = False
c.ServerApp.open_browser = False
# Set password for remote access login
c.PasswordIdentityProvider.hashed_password = (
"sha1:005773a53a70:a5c53a779fa0e1498ada0f8fdb48ad1fef1257ff"
)
c.PasswordIdentityProvider.password_required = True
c.PasswordIdentityProvider.allow_password_change = False

View file

@ -1,41 +0,0 @@
{
agg,
freetype,
buildLuarocksPackage,
fetchgit,
fetchurl,
lua,
luaOlder,
}:
buildLuarocksPackage {
pname = "graph-toolkit";
version = "scm-1";
knownRockspec =
(fetchurl {
url = "mirror://luarocks/graph-toolkit-scm-1.rockspec";
sha256 = "0hsrf7k45w8ri18mdrx44mv1kr4zfr5mg76cxi8nnr30ssrblvgb";
})
.outPath;
src = fetchgit (removeAttrs (builtins.fromJSON '' {
"url": "https://github.com/franko/graph-toolkit",
"rev": "126a11bdbb98faf785c373516a288b7fa609f824",
"date": "2015-01-02T08:44:01-08:00",
"path": "/nix/store/gbwbjrl4j42kaqk3pjzvmckmr6dimkd0-graph-toolkit",
"sha256": "1pqjpqfandi7brk2213vlq891bl8drb0q32m5wmf0l21li0l4zrp",
"hash": "sha256-N39CQaRBUOAqL1UMDFZuiK6QEKZ7BCFmXic2qxy+Et8=",
"fetchLFS": false,
"fetchSubmodules": true,
"deepClone": false,
"leaveDotGit": false
}
'') ["date" "path" "sha256"]);
disabled = luaOlder "5.1";
propagatedBuildInputs = [lua agg freetype];
meta = {
homepage = "http://franko.github.io/graph-toolkit/";
description = "Lua Graphics Toolkit";
license.fullName = "GPL-3";
};
}

View file

@ -1,33 +0,0 @@
{
buildLuarocksPackage,
fetchurl,
lua,
luaAtLeast,
luaOlder,
luaPackages,
}: let
xsys = luaPackages.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 = [lua xsys];
meta = {
homepage = "https://github.com/stepelu/lua-sci";
description = "Scientific Computing with LuaJIT";
license.fullName = "MIT";
};
}

View file

@ -1,30 +0,0 @@
{
buildLuarocksPackage,
fetchurl,
lua,
luaAtLeast,
luaOlder,
}:
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 = [lua];
meta = {
homepage = "http://scilua.org/xsys.html";
description = "LuaJIT General Purpose Routines";
license.fullName = "MIT";
};
}

View file

@ -1,9 +0,0 @@
[virtualenvs]
create = true
in-project = true
[virtualenvs.options]
always-copy = true
no-pip = true
no-setuptools = true
system-site-packages = true

View file

@ -1,37 +0,0 @@
[lint]
select = [
"F", "E4", "E7", "E9", # Defaults
"W", # pycodestyle warnings
"B", # Flake8 bugbear rules
"PD", # Pandas vet rules
"NPY", # NumPy specific rules
"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 = true

View file

@ -1,51 +0,0 @@
{config, ...}: {
imports = [../desktop.nix];
wayland.windowManager.river = {
enable = true;
xwayland.enable = true;
extraSessionVariables = {
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
QT_QPA_PLATFORM = "wayland";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
MOZ_ENABLE_WAYLAND = "1";
};
systemd = {
enable = true;
variables = [
"DISPLAY"
"WAYLAND_DISPLAY"
"XDG_CURRENT_DESKTOP"
"NIXOS_OZONE_WL"
"XCURSOR_THEME"
"XCURSOR_SIZE"
];
};
settings = {
# These are currently example settings
border-width = 2;
declare-mode = [
"locked"
"normal"
"passthrough"
];
input = {
pointer-foo-bar = {
accel-profile = "flat";
events = true;
pointer-accel = -0.3;
tap = false;
};
};
map = {
normal = {
"Alt Q" = "close";
};
};
rule-add = {};
set-cursor-warp = "on-output-change";
set-repeat = "50 300";
spawn = [];
xcursor-theme = with config.gtk.cursorTheme; "${name} ${toString size}";
};
};
}

View file

@ -1,141 +0,0 @@
{
config,
pkgs,
fonts,
scheme,
accentColour ? "base07",
...
}: {
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
font = fonts.monospace.name;
location = "center";
plugins = with pkgs; [rofi-emoji];
pass = {
enable = true;
extraConfig = ''
USERNAME_field='login'
'';
};
extraConfig = {
modi = "run,drun,ssh,window,emoji,combi";
combi-modi = "drun,ssh,window,emoji";
sidebar-mode = true;
sort = true;
sorting-method = "fzf";
matching = "fuzzy";
icon-theme = config.gtk.iconTheme.name;
show-icons = true;
application-fallback-icon = "application-x-addon";
drun-display-format = "{icon} {name} ({categories})";
disable-history = false;
hide-scrollbar = true;
display-run = " 󰅴 Run ";
display-drun = " 󱓞 Apps ";
display-ssh = " 󰢹 SSH ";
display-window = " 󰧨 Move ";
display-emoji = " 󰞅 Emoji ";
display-combi = " 󰛡 Combi ";
};
theme = with builtins;
with scheme; let
inherit (config.lib.formats.rasi) mkLiteral;
bg = mkLiteral "rgba (${base00-rgb-r}, ${base00-rgb-g}, ${base00-rgb-b}, 80%)";
bg2 = mkLiteral "rgba (${base01-rgb-r}, ${base01-rgb-g}, ${base01-rgb-b}, 100%)";
fg = mkLiteral withHashtag.base05;
fg2 = mkLiteral withHashtag.base04;
border = mkLiteral withHashtag.${accentColour};
blue = mkLiteral withHashtag.blue;
in {
"*" = {
background-color = mkLiteral "transparent";
text-color = fg;
font = with fonts; "${monospace.name} ${toString sizes.popups}";
};
window = {
height = mkLiteral "75%";
width = mkLiteral "75%";
border = mkLiteral "1px";
border-color = border;
border-radius = mkLiteral "10px";
background-color = bg;
};
inputbar = {
children = map mkLiteral ["prompt" "entry"];
padding = mkLiteral "2px";
};
prompt = {
background-color = bg2;
padding = mkLiteral "6px";
text-color = blue;
border-radius = mkLiteral "10px";
margin = mkLiteral "20px 0px 0px 20px";
};
textbox-prompt-colon = {
expand = false;
str = "=";
};
entry = {
padding = mkLiteral "6px";
margin = mkLiteral "20px 0px 0px 10px";
};
listview = {
border = mkLiteral "0px 0px 0px";
padding = mkLiteral "6px 0px 0px";
margin = mkLiteral "10px 0px 0px 20px";
columns = 2;
lines = 5;
};
element = {
padding = mkLiteral "5px";
};
"element-icon" = {
size = mkLiteral "25px";
};
"element selected" = {
background-color = bg2;
text-color = blue;
border-radius = mkLiteral "10px";
};
mode-switcher = {
spacing = 0;
};
button = {
padding = mkLiteral "10px";
text-color = fg2;
border-radius = mkLiteral "10px";
vertical-align = mkLiteral "0.5";
horizontal-align = mkLiteral "0.5";
};
"button selected" = {
background-color = bg2;
text-color = blue;
};
message = {
margin = mkLiteral "2px";
padding = mkLiteral "2px";
border-radius = mkLiteral "5px";
};
textbox = {
padding = mkLiteral "6px";
margin = mkLiteral "20px 0px 0px 20px";
text-color = blue;
};
};
};
}

View file

@ -1,10 +0,0 @@
{pkgs, ...}: {
home.packages = [
(pkgs.writeShellScriptBin "git-sync-all"
(builtins.readFile ./git-sync-all.sh))
(pkgs.writeShellScriptBin "rsync-local-config"
(builtins.readFile ./rsync-local-config.sh))
(pkgs.writeShellScriptBin "xdg-query-program"
(builtins.readFile ./xdg-query-program.sh))
];
}

View file

@ -1,55 +0,0 @@
# Sync common directories, setting url to ensure it's up-to-date first
SYNC_DIRS=(
"$HOME/.password-store/"
"$HOME/.elfeed/"
"$HOME/Documents/Org/"
"$HOME/Documents/References/"
)
SYNC_URLS=(
"https://git.xenia.me.uk/pixelifytica/pass.git"
"https://git.xenia.me.uk/pixelifytica/elfeed.git"
"https://git.xenia.me.uk/pixelifytica/org.git"
"https://git.xenia.me.uk/pixelifytica/references.git"
)
for i in "${!SYNC_DIRS[@]}"; do
DIRECTORY="${SYNC_DIRS[$i]}"
URL="${SYNC_URLS[$i]}"
echo "--- sync: $DIRECTORY ---"
if [ ! -d "$DIRECTORY" ]; then
git clone "$URL" "$DIRECTORY"
fi
(
cd "$DIRECTORY" || exit
git remote set-url origin "$URL"
git-sync -ns
)
done
# Pull NixOS and Emacs config if simple fast-forward
PULL_DIRS=(
"/etc/nixos"
"${XDG_CONFIG_HOME:-$HOME/.config}/emacs"
)
PULL_URLS=(
"https://git.xenia.me.uk/pixelifytica/nixos.git"
"https://git.xenia.me.uk/pixelifytica/emacs.git"
)
for i in "${!PULL_DIRS[@]}"; do
DIRECTORY="${PULL_DIRS[$i]}"
URL="${PULL_URLS[$i]}"
echo "--- pull: $DIRECTORY ---"
if [ ! -d "$DIRECTORY" ]; then
git clone "$URL" "$DIRECTORY"
fi
(
cd "$DIRECTORY" || exit
if [ "$(git branch --show-current)" = "main" ]; then
git remote set-url origin "$URL"
git pull --ff-only
git push
else
echo "Not syncing repo $DIRECTORY on branch $(git branch --show-current)"
fi
)
done

View file

@ -1,25 +0,0 @@
HOST=$1
# Config files
for TARGET in bat bottom git starship.toml; do
SOURCE="$HOME/.config/$TARGET"
echo "--- $SOURCE ---"
TMP_TARGET=/tmp/rsync-local-config
TMP_SOURCE=$TMP_TARGET
NIX_SED="sed -i 's|/nix/.*/bin/||g'"
NIX_REPLACE="$NIX_SED $TMP_TARGET"
if [[ -e $SOURCE ]]; then
if [[ -d $SOURCE ]]; then
SOURCE=$SOURCE/
TMP_SOURCE=$TMP_SOURCE/
NIX_REPLACE="fd -g '**' $TMP_TARGET -tfile -x $NIX_SED {};"
fi
rsync -avzL --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$SOURCE" $TMP_TARGET
sh -c "$NIX_REPLACE"
rsync -avzL --delete --exclude=".git*" $TMP_SOURCE "$HOST:.config/$TARGET"
rm -rf $TMP_SOURCE
fi
done
# Fonts
rsync -avzL --delete --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$(nix path-info flake:iosevka#packages.x86_64-linux.iosevka-custom-nerdfont)/share/fonts/truetype/" "$HOST:.fonts/IosevkaCustomNerdFont"
rsync -avzL --delete --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$(nix path-info flake:iosevka#packages.x86_64-linux.iosevka-custom-aile)/share/fonts/truetype/" "$HOST:.fonts/IosevkaCustomAile"

View file

@ -1,38 +0,0 @@
#!/usr/bin/env nix-shell
--[[
#!nix-shell -i lua -p git git-sync
]]
local config_home
if os.getenv("XDG_CONFIG_HOME") then
config_home = os.getenv("XDG_CONFIG_HOME")
else
config_home = "~/.config/"
end
local sync_mapping = {
["~/.password-store"] = "https://git.xenia.me.uk/pixelifytica/pass.git",
["~/.elfeed"] = "https://git.xenia.me.uk/pixelifytica/elfeed.git",
["~/Documents/Org"] = "https://git.xenia.me.uk/pixelifytica/org.git",
["~/Documents/References"] = "https://git.xenia.me.uk/pixelifytica/references.git",
}
local pull_mapping = {
["/etc/nixos"] = "https://git.xenia.me.uk/pixelifytica/nixos.git",
[config_home .. "/emacs"] = "https://git.xenia.me.uk/pixelifytica/emacs.git",
}
local function git_sync(directory, url)
print("--- sync: " .. directory .. " ---")
end
local function git_pull(directory, url, ff_only)
print("--- pull: " .. directory .. " ---")
end
for directory, url in pairs(sync_mapping) do
git_sync(directory, url)
end
for directory, url in pairs(pull_mapping) do
git_pull(directory, url, true)
end

View file

@ -1,68 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p git git-sync
import os
import queue
import subprocess
from pathlib import Path
from typing import Dict
HOME = Path("~").expanduser().resolve()
SYNC_MAPPING: Dict[Path, str] = {
Path(
"~/.password-store"
).expanduser(): "https://git.xenia.me.uk/pixelifytica/pass.git",
Path("~/.elfeed").expanduser(): "https://git.xenia.me.uk/pixelifytica/elfeed.git",
Path(
"~/Documents/Org"
).expanduser(): "https://git.xenia.me.uk/pixelifytica/org.git",
Path(
"~/Documents/References"
).expanduser(): "https://git.xenia.me.uk/pixelifytica/references.git",
}
PULL_MAPPINGS: Dict[Path, str] = {
Path("/etc/nixos"): "https://git.xenia.me.uk/pixelifytica/nixos.git",
Path(os.getenv("XDG_CONFIG_HOME", "~/.config")).expanduser()
/ "emacs": "https://git.xenia.me.uk/pixelifytica/emacs.git",
}
def git_set_url(directory: Path, url: str) -> None:
"""Set url for directory"""
comp = subprocess.run(f"git remote set-url origin {url}".split(), cwd=directory)
if comp.returncode != 0:
raise UserWarning(f"{comp.returncode} from {' '.join(comp.args)}")
subprocess.run("git remote -v".split(), cwd=directory)
def git_sync(directory: Path, url: str) -> subprocess.CompletedProcess:
"""Sync status of repository"""
print(f"--- sync: ${directory} ---")
if not directory.exists():
return subprocess.run("exit 1".split()) # TODO
git_set_url(directory, url)
return subprocess.run("git-sync -ns".split(), cwd=directory)
def git_pull(
directory: Path, url: str, ff_only: bool = True
) -> subprocess.CompletedProcess:
"""Pull updates for directory from url"""
print(f"--- pull: {directory} ---")
if not directory.exists():
return subprocess.run("exit 1".split()) # TODO
git_set_url(directory, url)
return subprocess.run("git pull --ff-only".split(), cwd=directory)
def main(*args, **kwargs) -> None:
for directory, url in SYNC_MAPPING.items():
print(git_sync(directory, url))
for directory, url in PULL_MAPPINGS.items():
print(git_pull(directory, url))
if __name__ == "__main__":
main()

View file

@ -1,3 +0,0 @@
FILETYPE=$(xdg-mime query filetype $@)
DEFAULT=$(xdg-mime query default $FILETYPE)
echo "$FILETYPE -> $DEFAULT"

View file

@ -1,40 +0,0 @@
{...}: {
programs.ssh = {
enable = true;
forwardAgent = true;
compression = true;
serverAliveInterval = 15;
serverAliveCountMax = 3;
controlMaster = "auto";
controlPersist = "10s";
extraConfig = ''
AddKeysToAgent=yes
SetEnv TERM=xterm-256color
'';
matchBlocks = {
"git*".user = "git";
"legion" = {
user = "pixelifytica";
hostname = "192.168.0.31";
};
"vanguard" = {
user = "pixelifytica";
hostname = "192.168.0.90";
};
"ionos" = {
user = "root";
hostname = "77.68.67.133";
};
"freia" = {
user = "elitherl";
hostname = "freia020.hpc.l";
forwardX11Trusted = true;
};
"heimdall" = {
user = "elitherl";
hostname = "heimdall003.jet.uk";
forwardX11Trusted = true;
};
};
};
}

View file

@ -1,75 +0,0 @@
{...}: {
programs.starship = {
enable = true;
enableTransience = true;
settings = {
add_newline = false;
character = {
success_symbol = "[󰁔 ](bold green)";
error_symbol = "[󰁔 ](bold red)";
};
command_timeout = 2000;
container = {symbol = " ";};
directory = {
truncation_length = 2;
fish_style_pwd_dir_length = 1;
truncate_to_repo = false;
};
direnv = {disabled = false;};
git_branch = {
symbol = " ";
only_attached = true;
ignore_branches = ["master" "main"];
};
git_commit = {
format = "[ $hash | $tag]($style) ";
tag_symbol = " ";
tag_disabled = false;
};
git_metrics = {disabled = false;};
git_status = {
stashed = " ";
ahead = " ";
behind = " ";
up_to_date = "";
diverged = " ";
conflicted = " ";
deleted = " ";
renamed = " ";
modified = " ";
staged = " ";
untracked = " ";
typechanged = " ";
};
hostname = {
ssh_only = true;
ssh_symbol = "󰢹 ";
};
jobs = {symbol = "󰈏 ";};
line_break = {disabled = false;};
localip = {disabled = false;};
memory_usage = {disabled = false;};
os = {
disabled = false;
format = "on [$symbol]($style) ";
};
python = {python_binary = "python3";};
shell = {
disabled = false;
format = "using [$indicator ]($style)";
};
status = {
disabled = false;
map_symbol = true;
pipestatus = true;
symbol = " ";
success_symbol = "";
not_executable_symbol = " ";
not_found_symbol = " ";
sigint_symbol = " ";
signal_symbol = " ";
};
sudo = {disabled = false;};
};
};
}

View file

@ -1,181 +0,0 @@
{
config,
lib,
pkgs,
fonts,
scheme,
accentColour ? "base07",
...
}: {
imports = [../desktop.nix];
home.packages = with pkgs; [
(writeShellScriptBin "protonmail-setup-bridge" ''
pkill -9 -f protonmail-bridge
${protonmail-bridge}/bin/protonmail-bridge -c
swaymsg exec "${protonmail-bridge}/bin/protonmail-bridge -n"
'')
(writeShellScriptBin "davmail-setup" ''
systemctl --user restart davmail # Ensure config file is present
systemctl --user stop davmail
${davmail}/bin/davmail -n ~/.davmail.properties
systemctl --user restart davmail
'')
];
wayland.windowManager.sway = {
enable = true;
package = null;
swaynag.enable = true;
systemd.enable = true;
xwayland = true;
config = {
input = {
"*" = {
xkb_layout = "gb";
xkb_options = "ctrl:nocaps";
};
"type:touchpad" = {
tap = "enabled";
natural_scroll = "enabled";
};
};
seat = {
"seat0" = {
xcursor_theme = with config.gtk.cursorTheme; "${name} ${toString size}";
};
};
modifier = "Mod4";
terminal = "${config.programs.alacritty.package}/bin/alacritty";
menu = "${config.programs.rofi.finalPackage}/bin/rofi -show drun";
workspaceAutoBackAndForth = true;
bars = [];
gaps = {
inner = 5;
outer = 0;
};
fonts = {
names = [fonts.monospace.name];
style = "regular";
size = fonts.sizes.desktop * 1.0;
};
colors = with scheme.withHashtag; let
text = toString base05;
indicator = toString cyan;
in rec {
background = toString base00;
focused = rec {
inherit background text indicator;
border = toString scheme.withHashtag.${accentColour};
childBorder = border;
};
focusedInactive = rec {
inherit background text indicator;
border = toString base04;
childBorder = border;
};
unfocused = rec {
inherit background text indicator;
border = toString base03;
childBorder = border;
};
urgent = rec {
inherit background text indicator;
border = toString red;
childBorder = border;
};
};
startup = [
{command = "${pkgs.swaynotificationcenter}/bin/swaync";}
{command = "${pkgs.swaybg}/bin/swaybg -m fill -i ${../../wallpapers/waves/cat-waves.png}";}
{command = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1";}
{command = "${pkgs.protonmail-bridge}/bin/protonmail-bridge -n";}
];
window = {
border = 1;
commands = [
{
criteria = {app_id = "org.kde.polkit-kde-authentication-agent-1";};
command = "floating enable";
}
{
criteria = {app_id = "Pinentry";};
command = "floating enable";
}
{
criteria = {app_id = "pavucontrol";};
command = "floating enable";
}
{
criteria = {app_id = ".blueman-manager-wrapped";};
command = "floating enable";
}
{
criteria = {app_id = "nm-connection-editor";};
command = "floating enable";
}
{
criteria = {class = "steam";};
command = "layout tabbed";
}
];
};
floating.border = 1;
keybindings = with config; let
modifier = wayland.windowManager.sway.config.modifier;
in
lib.mkOptionDefault {
# Movement
"${modifier}+comma" = "workspace prev";
"${modifier}+period" = "workspace next";
"${modifier}+shift+comma" = "move workspace prev";
"${modifier}+shift+period" = "move workspace next";
"${modifier}+bracketleft" = "move workspace to output left";
"${modifier}+bracketright" = "move workspace to output right";
# Function keys
## Sound
"XF86AudioMute" = "exec ${services.avizo.package}/bin/volumectl %";
"XF86AudioMicMute" = "exec ${services.avizo.package}/bin/volumectl -m %";
"XF86AudioRaiseVolume" = "exec ${services.avizo.package}/bin/volumectl -u + 5";
"XF86AudioLowerVolume" = "exec ${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 ${services.avizo.package}/bin/lightctl + 5";
"XF86MonBrightnessDown" = "exec ${services.avizo.package}/bin/lightctl - 5";
# System utilities
"${modifier}+F1" = "exec ${programs.swaylock.package}/bin/swaylock --screenshots --clock --indicator --grace-no-mouse";
"${modifier}+p" = "exec ${programs.wlogout.package}/bin/wlogout";
"${modifier}+z" = "exec ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw";
"${modifier}+Shift+z" = "exec ${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw";
"${modifier}+Shift+Return" = "exec ${programs.emacs.finalPackage}/bin/emacsclient -c";
};
};
extraConfig = ''
bindgesture swipe:right workspace prev
bindgesture swipe:left workspace next
corner_radius 10
blur enable
blur_xray disable
blur_passes 3
blur_radius 5
corner_radius 10
shadows enable
shadow_blur_radius 4
layer_effects "system-menu" blur enable; blur_ignore_transparent enable; shadows disable
layer_effects "gtk-layer-shell" blur enable; blur_ignore_transparent enable; shadows disable
layer_effects "waybar" blur enable; blur_ignore_transparent enable; shadows disable
layer_effects "rofi" blur enable; blur_ignore_transparent enable; shadows disable
layer_effects "avizo" blur enable; blur_ignore_transparent enable; shadows disable
layer_effects "swaync-notification-window" blur enable; blur_ignore_transparent enable; shadows disable
layer_effects "swaync-control-center" blur enable; blur_ignore_transparent enable; shadows disable
titlebar_separator enable
scratchpad_minimize enable
'';
};
}

View file

@ -1,18 +0,0 @@
{pkgs, ...}: {
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
# Settings are specifically for swaylock-effects
settings = {
indicator-radius = 100;
indicator-thickness = 10;
indicator-caps-lock = true;
ignore-empty-password = true;
show-failed-attempts = true;
effect-blur = "5x3";
effect-vignette = "0.5:0.5";
grace = 2;
fade-in = 0.2;
};
};
}

View file

@ -1,355 +0,0 @@
{
pkgs,
fonts,
scheme,
accentColour ? "base07",
...
}: {
home.packages = [pkgs.swaynotificationcenter];
xdg.configFile."swaync/style.css".text = with scheme; ''
* {
all: unset;
font-size: 1.2rem;
font-family: "${fonts.monospace.name}";
transition: 200ms;
}
.floating-notifications.background .notification-row .notification-background {
border-radius: 10px;
border: 1px solid ${withHashtag.${accentColour}};
margin: 18px;
background-color: rgba(${base00-rgb-r}, ${base00-rgb-g}, ${base00-rgb-b}, 0.8);
color: ${withHashtag.base05};
padding: 0;
}
.floating-notifications.background
.notification-row
.notification-background
.notification {
padding: 7px;
border-radius: 10px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content {
margin: 7px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content
.summary {
color: ${withHashtag.base05};
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content
.time {
color: ${withHashtag.base04};
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content
.body {
color: ${withHashtag.base05};
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> * {
min-height: 3.4em;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action {
border-radius: 10px;
background-color: ${withHashtag.base01};
color: ${withHashtag.base05};
margin: 7px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:hover {
background-color: ${withHashtag.base01};
color: ${withHashtag.base05};
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:active {
background-color: ${withHashtag.blue};
color: ${withHashtag.base00};
}
.floating-notifications.background
.notification-row
.notification-background
.close-button {
margin: 7px;
padding: 2px;
border-radius: 10px;
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.floating-notifications.background
.notification-row
.notification-background
.close-button:hover {
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.floating-notifications.background
.notification-row
.notification-background
.close-button:active {
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.control-center {
border-radius: 10px;
border: 1px solid ${withHashtag.${accentColour}};
margin: 18px;
background-color: rgba(${base00-rgb-r}, ${base00-rgb-g}, ${base00-rgb-b}, 0.8);
color: ${withHashtag.base05};
padding: 14px;
}
.control-center .widget-title {
color: ${withHashtag.base05};
font-size: 1.3em;
}
.control-center .widget-title button {
border-radius: 7px;
background-color: ${withHashtag.base01};
color: ${withHashtag.base05};
padding: 8px;
}
.control-center .widget-title button:hover {
background-color: ${withHashtag.base02};
color: ${withHashtag.base05};
}
.control-center .widget-title button:active {
background-color: ${withHashtag.base03};
color: ${withHashtag.base05};
}
.control-center .notification-row .notification-background {
border-radius: 10px;
background-color: ${withHashtag.base01};
color: ${withHashtag.base05};
margin-top: 14px;
}
.control-center .notification-row .notification-background .notification {
padding: 7px;
border-radius: 7px;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content {
margin: 7px;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content
.summary {
color: ${withHashtag.base05};
}
.control-center
.notification-row
.notification-background
.notification
.notification-content
.time {
color: ${withHashtag.base04};
}
.control-center
.notification-row
.notification-background
.notification
.notification-content
.body {
color: ${withHashtag.base05};
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> * {
min-height: 3.4em;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action {
border-radius: 7px;
background-color: ${withHashtag.base00};
color: ${withHashtag.base05};
margin: 7px;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:hover {
background-color: ${withHashtag.base01};;
color: ${withHashtag.base05};
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:active {
background-color: ${withHashtag.blue};
color: ${withHashtag.base05};
}
.control-center .notification-row .notification-background .close-button {
margin: 7px;
padding: 2px;
border-radius: 6.3px;
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.control-center .notification-row .notification-background .close-button:hover {
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.control-center
.notification-row
.notification-background
.close-button:active {
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.control-center .notification-row .notification-background:hover {
background-color: ${withHashtag.base00};
color: ${withHashtag.base05};
}
.control-center .notification-row .notification-background:active {
background-color: ${withHashtag.blue};
color: ${withHashtag.base05};
}
progressbar,
progress,
trough {
border-radius: 12.6px;
}
.notification.critical progress {
background-color: ${withHashtag.red};
}
.notification.low progress,
.notification.normal progress {
background-color: ${withHashtag.blue};
}
trough {
background-color: ${withHashtag.base00};
}
.control-center trough {
background-color: ${withHashtag.base03};
}
.control-center-dnd {
margin-top: 5px;
border-radius: 8px;
background: ${withHashtag.base00};
border: 1px solid ${withHashtag.base03};
}
.control-center-dnd:checked {
background: ${withHashtag.base00};
}
.control-center-dnd slider {
background: ${withHashtag.base03};
border-radius: 8px;
}
.widget-dnd {
margin: 0px;
font-size: 1.1rem;
}
.widget-dnd > switch {
font-size: initial;
border-radius: 8px;
background: ${withHashtag.base00};
border: 1px solid ${withHashtag.base03};
}
.widget-dnd > switch:checked {
background: ${withHashtag.base00};
}
.widget-dnd > switch slider {
background: ${withHashtag.base01};
border-radius: 8px;
border: 1px solid ${withHashtag.${accentColour}};
}
'';
}

View file

@ -1,354 +0,0 @@
{
config,
lib,
pkgs,
hostName,
fonts,
scheme,
accentColour ? "base07",
...
}: {
systemd.user.targets.tray.Unit = {
Description = "Home Manager System Tray";
Requires = ["graphical-session-pre.target"];
};
programs.waybar = {
enable = true;
systemd = {
enable = true;
target = "sway-session.target";
};
settings = rec {
main = {
name = "main";
layer = "top";
position = "top";
# Layout
"modules-left" = ["mpris"];
"modules-center" = ["sway/workspaces"];
"modules-right" = [
"custom/notification"
"pulseaudio"
"network"
"bluetooth"
"clock#calendar"
"clock"
"backlight"
"battery"
"custom/weather"
"tray"
];
# Module config
"sway/workspaces" = {
format = "{icon}";
format-icons = {
"1" = "󰫃 ";
"2" = "󰫄 ";
"3" = "󰫅 ";
"4" = "󰫆 ";
"5" = "󰫇 ";
"6" = "󰫈 ";
default = "󰋙 ";
urgent = "󰁡 ";
};
# show-special = false;
# sort-by-number = true;
all-outputs = false;
persistent-workspaces = {
"1" = [];
"2" = [];
"3" = [];
"4" = [];
"5" = [];
"6" = [];
};
};
"sway/window" = {
"format" = "{title}";
"max-length" = 50;
"rewrite" = {
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
"(Alacritty.*)" = " $1";
"(.*) - mpv" = "󰦟 $1";
"swayimg: (.*)" = "󰋩 $1";
"(btm)" = " Resource Usage [$1]";
"(cava)" = "󰝚 Music Visualiser [$1]";
"(.*) - Thunar" = "󰝰 $1";
"Mozilla Firefox" = "󰈹 $1";
"(.*) Mozilla Firefox" = "󰈹 $1";
"Nyxt - (.*)" = "󰀹 $1";
"(.*) - Chromium" = "󰊯 $1";
"((?:.*)WebCord.*)" = "󰙯 $1";
"(Signal.*)" = "󰭹 $1";
"([Ss]team)" = "󰓓 $1";
"(Prism Launcher.*)" = "󰍳 Minecraft ($1)";
"(X2Go Client)" = "󰢹 $1";
"(NoMachine|Nxplayer.bin) (.*)" = "󰢹 $1 $2";
};
};
mpris = {
"format" = "{status_icon} {player_icon} {artist} - {title}";
"tooltip-format" = "{player_icon} ({player}) {dynamic}";
"title-len" = 64;
"interval" = 1;
"dynamic-order" = [
"album"
"artist"
"title"
"position"
"length"
];
"player-icons" = {
"default" = "󰲸 ";
"emms" = " ";
"firefox" = "󰈹 ";
"mpv" = "󰦟 ";
};
"status-icons" = {
"playing" = "󰐊";
"paused" = "󰏤";
"stopped" = "󰓛";
};
"ignored-players" = [];
};
pulseaudio = {
scroll-step = 5;
format = "{format_source}{icon}{volume}%";
format-muted = "{format_source} 󰝟 ";
format-source = "󰍬 ";
format-source-muted = "󰍭 ";
format-icons = {
car = "󰄍 ";
default = ["󰕿 " "󰖀 " "󰕾 "];
hands-free = "󰥰 ";
headset = "󰋎 ";
phone = "󰏲 ";
portable = "󰏳 ";
headphone = "󰋋 ";
};
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
on-click-right = "${pkgs.pamixer}/bin/pamixer -t";
on-scroll-up = "${pkgs.pamixer}/bin/pamixer -i 5";
on-scroll-down = "${pkgs.pamixer}/bin/pamixer -d 5";
};
disk = {
format = "󰋊 {percentage_used}%";
path = config.home.homeDirectory;
};
cpu = {
format = "󰻠 {usage}%";
tooltip = false;
};
memory = {format = "󰍛 {}%";};
temperature = {
critical-threshold = 80;
format = "{icon} {temperatureC}°C";
format-icons = ["󱃃" "󰔏" "󱃂"];
};
network = {
format-icons = ["󰤟 " "󰤢 " "󰤥 " "󰤨 "];
format-wifi = "{icon}";
format-ethernet = "󰈁 ";
tooltip-format = "{essid} ({signalStrength}%)";
format-linked = "󰈂 ";
format-disconnected = "󰈂 ";
};
bluetooth = {
format = "󰂯";
format-disabled = "󰂲";
format-off = "󰂲";
format-on = "󰂯";
format-connected = "󰂱";
tooltip-format = "{status} | {device_alias}";
on-click = "${pkgs.bluez}/bin/bluetoothctl power on";
on-click-right = "${pkgs.bluez}/bin/bluetoothctl power off";
};
"clock#calendar" = {
# format = "{:󰃭 %Y-%m-%d}";
format = "{:%Y-%m-%d}"; # TEMP, see https://github.com/Alexays/Waybar/issues/3021
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "month";
mode-mon-col = 3;
weeks-pos = "left";
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
days = "<span color='#ecc6d9'><b>{}</b></span>";
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
};
};
actions = {
on-click-right = "mode";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
clock = {
# format = "{:󰥔 %R}";
format = "{:%R}"; # TEMP, see https://github.com/Alexays/Waybar/issues/3021
};
backlight = {
format = "{icon}";
tooltip-format = "{percent}%";
format-icons = [" " " " " " " " " " " " " " " " " "];
};
battery = {
states = {
warning = 30;
critical = 20;
};
format = "{icon}";
format-charging = "󰂄 ";
format-plugged = "󰚥 ";
tooltip-format = "{capacity}% {time}";
format-icons = ["󱃍 " "󰁺 " "󰁻 " "󰁼 " "󰁽 " "󰁾 " "󰁿 " "󰂀 " "󰂁 " "󰂂 " "󰁹 "];
};
"custom/notification" = let
swaync = pkgs.swaynotificationcenter;
in {
"tooltip" = false;
"format" = "{icon}{}";
"format-icons" = {
"notification" = "󱅫 ";
"none" = "󰂚 ";
"dnd-notification" = "󰅸 ";
"dnd-none" = "󰂜 ";
"inhibited-notification" = "󰅸 ";
"inhibited-none" = "󰂜 ";
"dnd-inhibited-notification" = "󰅸 ";
"dnd-inhibited-none" = "󰂜 ";
};
"return-type" = "json";
"exec-if" = "which ${swaync}/bin/swaync-client";
"exec" = "${swaync}/bin/swaync-client -swb";
"on-click" = "${swaync}/bin/swaync-client -t -sw";
"on-click-right" = "${swaync}/bin/swaync-client -d -sw";
"escape" = true;
};
"custom/weather" = let
date-format = "%Y-%m-%d";
custom-indicator = "{ICON}{temp_C}({FeelsLikeC})";
in {
"format" = "{}°";
"tooltip" = true;
"interval" = 900; # Every 15 minutes
"exec" = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
"return-type" = "json";
};
tray = {
icon-size = builtins.floor fonts.sizes.popups;
show-passive-items = true;
spacing = 5;
};
};
# TEMP FIX
alt = lib.mkIf (hostName == "Vanguard") {
inherit (main) layer position "sway/workspaces";
name = "alt";
"modules-left" = [];
"modules-center" = ["sway/workspaces"];
"modules-right" = [];
};
};
style = with scheme.withHashtag; let
accent = scheme.withHashtag.${accentColour};
in ''
* {
all: unset;
font-size: 1em;
font-family: ${fonts.monospace.name};
}
window {
background: transparent;
}
window > box {
color: ${base05};
background: alpha(${base00}, 0.8);
margin: 5px 5px 0px;
padding: 0px;
border: 1px solid ${accent};
border-radius: 10px;
}
tooltip {
background: alpha(${base00}, 0.8);
border: 1px solid ${accent};
border-radius: 10px;
}
tooltip label {
color: ${base05};
border: none;
padding: 5px;
margin: 0px;
}
#workspaces,
#window,
#mpris,
#pulseaudio,
#network,
#bluetooth,
#backlight,
#battery,
#clock,
#custom-notification,
#custom-weather,
#tray {
margin: 0px;
padding: 1px 5px;
}
#workspaces,
#window,
#mpris,
#tray,
#backlight,
#battery,
#custom-weather {
color: ${base05};
}
#workspaces button {
background: transparent;
color: ${base05};
margin: 0px;
padding: 0px 5px;
}
#workspaces button.persistent {
color: ${base03};
}
#workspaces button.focused {
color: ${accent};
}
#workspaces button.urgent {
color: ${base09};
}
#custom-notification {
color: ${base08};
}
#pulseaudio {
color: ${base09};
}
#network {
color: ${base0A};
}
#bluetooth {
color: ${base0B};
}
#clock.calendar {
color: ${base0C};
}
#clock {
color: ${base0D};
}
'';
};
}

View file

@ -1,79 +0,0 @@
{
fonts,
scheme,
accentColour ? "base07",
...
}: {
programs.wlogout = {
enable = true;
layout = [
{
label = "reboot";
action = "systemctl reboot";
text = "Reboot";
keybind = "r";
}
{
label = "shutdown";
action = "systemctl poweroff";
text = "Shutdown";
keybind = "s";
}
{
label = "logout";
action = "swaymsg exit";
text = "Logout";
keybind = "l";
}
];
style = with scheme.withHashtag; let
accent = scheme.withHashtag.${accentColour};
shutdownIcon = ./icons/shutdown.png;
rebootIcon = ./icons/reboot.png;
logoutIcon = ./icons/logout.png;
in ''
* {
font-size: ${toString fonts.sizes.popups}px;
font-family: "${fonts.sansSerif.name}";
}
window {
border: none;
background-color: transparent;
}
button {
border: ${accent};
background-color: ${base00};
background-repeat: no-repeat;
background-position: center;
background-size: 25%;
box-shadow: none;
margin: 5px;
color: ${base05};
}
button:hover {
background-color: ${base01};
color: ${base05};
}
button:focus {
background-color: ${base03};
color: ${base05};
}
#shutdown {
background-image: url("${shutdownIcon}");
}
#reboot {
background-image: url("${rebootIcon}");
}
#logout {
background-image: url("${logoutIcon}");
}
'';
};
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View file

@ -1,4 +0,0 @@
{pkgs, ...}: {
# TODO add colour scheme and emacs keybinds
programs.zathura = {enable = true;};
}

View file

@ -1,208 +0,0 @@
# Being an Emacs user, it is natural for me to use emacs-like and info-like keybindings for zathura.
#
# Zathura configuration documentation is available at
# https://git.pwmt.org/pwmt/zathura/-/blob/e5d2ca487147e79d0bb7acbf5174cd9dcc92a86c/doc/man/zathurarc.5.rst
# A full list of available functions and default keybindings is available at
# https://git.pwmt.org/pwmt/zathura/-/blob/e5d2ca487147e79d0bb7acbf5174cd9dcc92a86c/zathura/config.c#L301
#
# If you want to integrate Zathura with Emacs AUCTeX mode, see
# [emacs wiki](https://www.emacswiki.org/emacs/AUCTeX).
#
# Put the following inside `$XDG_CONFIG_HOME/zathura/zathurarc
## niceties
# when selecting text with mouse,
# copy to clipboard
set selection-clipboard clipboard
# keep several lines of text when
# scrolling a screenful
set scroll-full-overlap 0.2
# see documentation for details
set scroll-page-aware true
set window-title-basename true
set adjust-open width
set statusbar-home-tilde true
set vertical-center true
set synctex true
# large bold font easier on the eyes in index mode
# status bar can be disabled with A-s
set font "FreeSans bold 16"
set zoom-step 3
map [normal] <C-b> scroll left
map [normal] <C-n> scroll down
map [normal] <C-p> scroll up
map [normal] <C-f> scroll right
map [normal] <C-g> abort
map [insert] <C-g> abort
map [normal] <C-[> abort
map [normal] <A-\<> goto top
map [normal] <A-\>> goto bottom
map [normal] a adjust_window best-fit
map [normal] s adjust_window width
map [normal] F display_link
map [normal] <C-c> copy_link
map [normal] f follow
map [normal] m mark_add
map [normal] \' mark_evaluate
map [normal] \, navigate next
map [normal] \. navigate previous
map [normal] <A-Right> navigate next
map [normal] <A-Left> navigate previous
map [normal] <PageDown> scroll full-down
map [normal] <PageUp> scroll full-up
map [normal] <C-P> print
map [normal] c recolor
map [normal] R reload
map [normal] v rotate rotate_cw
map [normal] V rotate rotate_ccw
map [normal] <Left> scroll left
map [normal] <Up> scroll up
map [normal] <Down> scroll down
map [normal] <Right> scroll right
map [normal] <A-a> scroll half-left
map [normal] <C-V> scroll half-down
map [normal] <A-V> scroll half-up
map [normal] <A-e> scroll half-right
map [normal] <C-a> scroll full-left
map [normal] <C-v> scroll full-down
map [normal] <Return> scroll full-down
map [normal] <A-v> scroll full-up
map [normal] <C-e> scroll full-right
map [normal] <Space> scroll full-down
map [normal] <C-h> scroll full-up
map [normal] <BackSpace> scroll full-up
map [normal] <S-Space> scroll full-up
map [normal] l jumplist backward
map [normal] r jumplist forward
map [normal] <A-r> bisect forward
map [normal] <A-l> bisect backward
# still need to use '/' to trigger search
map [normal] <C-s> search forward
map [normal] <C-r> search backward
map [normal] p snap_to_page
map [normal] <C-i> toggle_index
map [normal] i toggle_index
map [normal] <Tab> toggle_index
map [normal] <A-s> toggle_statusbar
map [normal] <A-i> focus_inputbar
map [normal] d toggle_page_mode
map [normal] q quit
map [normal] + zoom in
map [normal] - zoom out
map [normal] = zoom in
map [normal] <A-P> toggle_presentation
map [normal] <A-F> toggle_fullscreen
map [normal] j toggle_fullscreen
map [fullscreen] j toggle_fullscreen
map [fullscreen] q toggle_fullscreen
map [fullscreen] <C-b> scroll left
map [fullscreen] <C-n> scroll down
map [fullscreen] <C-p> scroll up
map [fullscreen] <C-f> scroll right
map [fullscreen] <C-g> abort
map [fullscreen] <C-[> abort
map [fullscreen] <A-\<> goto top
map [fullscreen] <A-\>> goto bottom
map [fullscreen] a adjust_window best-fit
map [fullscreen] s adjust_window width
map [fullscreen] F display_link
map [fullscreen] <C-c> copy_link
map [fullscreen] f follow
map [fullscreen] m mark_add
map [fullscreen] \' mark_evaluate
map [fullscreen] \, navigate next
map [fullscreen] \. navigate previous
map [fullscreen] <A-Right> navigate next
map [fullscreen] <A-Left> navigate previous
map [fullscreen] <PageDown> scroll full-down
map [fullscreen] <PageUp> scroll full-up
map [fullscreen] <C-P> print
map [fullscreen] c recolor
map [fullscreen] R reload
map [fullscreen] v rotate rotate_cw
map [fullscreen] V rotate rotate_ccw
map [fullscreen] <Left> scroll left
map [fullscreen] <Up> scroll up
map [fullscreen] <Down> scroll down
map [fullscreen] <Right> scroll right
map [fullscreen] <A-a> scroll half-left
map [fullscreen] <C-V> scroll half-down
map [fullscreen] <A-V> scroll half-up
map [fullscreen] <A-e> scroll half-right
map [fullscreen] <C-a> scroll full-left
map [fullscreen] <C-v> scroll full-down
map [fullscreen] <Return> scroll full-down
map [fullscreen] <A-v> scroll full-up
map [fullscreen] <C-e> scroll full-right
map [fullscreen] <Space> scroll full-down
map [fullscreen] <C-h> scroll full-up
map [fullscreen] <BackSpace> scroll full-up
map [fullscreen] <S-Space> scroll full-up
map [fullscreen] l jumplist backward
map [fullscreen] r jumplist forward
map [fullscreen] <A-r> bisect forward
map [fullscreen] <A-l> bisect backward
map [fullscreen] <C-s> search forward
map [fullscreen] <C-r> search backward
map [fullscreen] p snap_to_page
map [fullscreen] i toggle_index
map [fullscreen] <C-i> toggle_index
map [fullscreen] <Tab> toggle_index
map [fullscreen] <A-s> toggle_statusbar
map [fullscreen] <A-i> focus_inputbar
map [fullscreen] d toggle_page_mode
map [fullscreen] + zoom in
map [fullscreen] - zoom out
map [fullscreen] = zoom in
# status bar will obscure last item in index mode
map [index] <A-s> toggle_statusbar
map [index] q toggle_index
map [index] i toggle_index
map [index] <C-p> navigate_index up
map [index] <C-h> navigate_index up
map [index] <BackSpace> navigate_index up
map [index] <C-n> navigate_index down
map [index] <A-v> navigate_index up
map [index] <C-v> navigate_index down
map [index] \< navigate_index top
map [index] \> navigate_index bottom
map [index] <A-\<> navigate_index top
map [index] <A-\>> navigate_index bottom
map [index] <C-b> navigate_index collapse
map [index] <C-f> navigate_index expand
map [index] <C-i> navigate_index expand-all
map [index] <A-i> navigate_index collapse-all
map [index] <Up> navigate_index up
map [index] <Down> navigate_index down
map [index] <Left> navigate_index collapse
map [index] <Right> navigate_index expand
map [index] <C-m> navigate_index select
map [index] <Space> navigate_index select
map [index] <Return> navigate_index select
map [index] <C-j> navigate_index select
map [index] <Esc> toggle_index
map [index] <C-[> toggle_index
map [index] <C-g> toggle_index
map [index] <C-c> toggle_index
map [presentation] i toggle_index
map [presentation] r navigate next
map [presentation] <Down> navigate next
map [presentation] <Right> navigate next
map [presentation] <PageDown> navigate next
map [presentation] <Space> navigate next
map [presentation] l navigate previous
map [presentation] <Left> navigate previous
map [presentation] <Up> navigate previous
map [presentation] <PageUp> navigate previous
map [presentation] <S-Space> navigate previous
map [presentation] <BackSpace> navigate previous
map [presentation] <F5> toggle_presentation
map [presentation] q toggle_presentation
map [presentation] <C-h> navigate previous
map [presentation] <M-v> navigate previous
map [presentation] <C-v> navigate next
map [presentation] <A-\<> goto top
map [presentation] <A-\>> goto bottom

View file

@ -1,38 +0,0 @@
{...}: {
programs.zsh = {
enable = true;
enableCompletion = true;
enableAutosuggestions = true;
syntaxHighlighting.enable = true;
enableVteIntegration = true;
autocd = true;
historySubstringSearch.enable = true;
history = {
extended = true;
ignoreDups = true;
ignoreSpace = true;
};
shellAliases = {
nixos-repl = "nixos-rebuild repl";
nixos-test = "sudo nixos-rebuild test";
nixos-boot = "sudo nixos-rebuild boot";
nixos-switch = "sudo nixos-rebuild switch";
nixos-reboot = "sudo nixos-rebuild boot && sudo reboot now";
nixos-shutdown = "sudo nixos-rebuild boot && sudo shutdown now";
gsa = "git-sync-all";
};
oh-my-zsh = {
enable = true;
plugins = ["colored-man-pages" "lol" "rand-quote"];
theme = "";
};
completionInit = ''
autoload -Uz +X compinit && compinit
## case insensitive path-completion
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
zstyle ':completion:*' menu select
'';
initExtra = "source ${./transient.zsh}\n";
};
}

View file

@ -1,31 +0,0 @@
#!/usr/bin/env zsh
zle-line-init() {
emulate -L zsh
[[ $CONTEXT == start ]] || return 0
while true; do
zle .recursive-edit
local -i ret=$?
[[ $ret == 0 && $KEYS == $'\4' ]] || break
[[ -o ignore_eof ]] || exit 0
done
local saved_prompt=$PROMPT
local saved_rprompt=$RPROMPT
PROMPT='󰁔 '
RPROMPT=''
zle .reset-prompt
PROMPT=$saved_prompt
RPROMPT=$saved_rprompt
if ((ret)); then
zle .send-break
else
zle .accept-line
fi
return ret
}
zle -N zle-line-init

View file

@ -1,22 +0,0 @@
{
config,
pkgs,
...
}: {
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
users.mutableUsers = false;
system.autoUpgrade = {
enable = true;
flake = "git+${config.nix.registry.nixos.to.url}";
flags = ["-L"]; # Print build logs
dates = "02:00";
randomizedDelaySec = "15min";
allowReboot = true;
rebootWindow = {
lower = "02:00";
upper = "05:00";
};
};
environment.systemPackages = with pkgs; [nil];
}

View file

@ -1,13 +0,0 @@
{
config,
pkgs,
...
}: {
boot.extraModulePackages = with config.boot.kernelPackages; [v4l2loopback];
boot.extraModprobeConfig = ''
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
'';
hardware.opengl.driSupport32Bit = true;
hardware.opengl.extraPackages = with pkgs; [amdvlk rocmPackages.clr.icd];
hardware.opengl.extraPackages32 = [pkgs.driversi686Linux.amdvlk];
}

View file

@ -1,16 +0,0 @@
{pkgs, ...}: {
# Setup keyfile
boot.initrd.secrets = {"/crypto_keyfile.bin" = null;};
# Enable swap on luks
boot.initrd.luks.devices."luks-761eeb11-3091-4142-9232-4fb33165eccd".device = "/dev/disk/by-uuid/761eeb11-3091-4142-9232-4fb33165eccd";
boot.initrd.luks.devices."luks-761eeb11-3091-4142-9232-4fb33165eccd".keyFile = "/crypto_keyfile.bin";
environment = {
etc."ppp/options".text = ''
ipcp-accept-remote
'';
systemPackages = with pkgs; [openfortivpn samba];
};
services.ollama.enable = true;
}

View file

@ -1,18 +0,0 @@
{pkgs, ...}: {
boot.loader.efi.efiSysMountPoint = "/boot/efi";
# Setup keyfile
boot.initrd.secrets = {"/crypto_keyfile.bin" = null;};
# Enable swap on luks
boot.initrd.luks.devices."luks-47d34268-5100-4eba-b34d-220f4239c1cb".device = "/dev/disk/by-uuid/47d34268-5100-4eba-b34d-220f4239c1cb";
boot.initrd.luks.devices."luks-47d34268-5100-4eba-b34d-220f4239c1cb".keyFile = "/crypto_keyfile.bin";
environment = {
etc."ppp/options".text = ''
ipcp-accept-remote
'';
systemPackages = with pkgs; [openfortivpn samba];
};
services.ollama.enable = true;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

View file

@ -1,20 +0,0 @@
system: "base16"
name: "Modus Vivendi Tinted"
author: "https://protesilaos.com/emacs/modus-themes"
variant: "dark"
base00: "0d0e1c"
base01: "2b3045"
base02: "4a4f69"
base03: "61647a"
base04: "c6daff"
base05: "ffffff"
base06: "ffffff"
base07: "ffffff"
base08: "ff5f59" # red (err / red-warmer)
base09: "ff9f80" # orange (comment / red-faint)
base0A: "fec43f" # yellow (warning / yellow-warmer)
base0B: "00c06f" # green (rx-construct / green-cooler)
base0C: "00d3d0" # cyan (variable / cyan)
base0D: "79a8ff" # blue (string / blue-warmer)
base0E: "f78fe7" # magenta (cursor / magenta-warmer)
base0F: "d2b580" # brown (identifier / yellow-faint)

View file

@ -1,20 +0,0 @@
system: "base16"
name: "Modus Vivendi"
author: "https://protesilaos.com/emacs/modus-themes"
variant: "dark"
base00: "000000"
base01: "303030"
base02: "535353"
base03: "646464"
base04: "c6daff"
base05: "ffffff"
base06: "ffffff"
base07: "ffffff"
base08: "ff5f59" # red (err / red-warmer)
base09: "ff9f80" # orange (comment / red-faint)
base0A: "fec43f" # yellow (warning / yellow-warmer)
base0B: "00c06f" # green (rx-construct / green-cooler)
base0C: "00d3d0" # cyan (variable / cyan)
base0D: "79a8ff" # blue (string / blue-warmer)
base0E: "f78fe7" # magenta (cursor / magenta-warmer)
base0F: "d2b580" # brown (identifier / yellow-faint)

View file

@ -1,3 +0,0 @@
{...}: {
specialisation.home = {};
}

View file

@ -1,3 +0,0 @@
{...}: {
specialisation.server = {};
}

View file

@ -1,3 +0,0 @@
{...}: {
specialisation.work = {};
}

View file

@ -1,39 +0,0 @@
{pkgs, ...}: {
environment.systemPackages = [pkgs.chromium];
programs.chromium = rec {
enable = true;
defaultSearchProviderEnabled = true;
defaultSearchProviderSearchURL = "https://duckduckgo.com/?q={searchTerms}";
defaultSearchProviderSuggestURL = defaultSearchProviderSearchURL;
extensions = [
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin
"dphilobhebphkdjbpfohgikllaljmgbn" # simplelogin
];
extraOpts = {
"AllowDinosaurEasterEgg" = true;
"AllowSystemNotifications" = true;
"AutoFillEnabled" = false;
"BookmarkBarEnabled" = false;
"BrowserLabsEnabled" = false;
"BrowserSignin" = 0;
"ClearBrowsingDataOnExitList" = [
"browsing_history"
"download_history"
"cached_images_and_files"
"password_signin"
"autofill"
];
"DefaultBrowserSettingEnabled" = false;
"DeviceAutoUpdateDisabled" = true;
"HomepageIsNewTabPage" = false;
"PasswordManagerEnabled" = false;
"RestoreOnStartup" = 5;
"ShoppingListEnabled" = false;
"ShowHomeButton" = false;
"SpellcheckEnabled" = true;
"SpellcheckLanguage" = ["en-GB"];
"SpellCheckServiceEnabled" = false;
"SyncDisabled" = true;
};
};
}

View file

@ -1,128 +0,0 @@
{...}: {
programs.firefox = {
enable = true;
languagePacks = ["en-GB"];
policies = {
BlockAboutProfiles = true;
Containers = {
Default = [
{
name = "Personal";
icon = "fingerprint";
color = "purple";
}
{
name = "Work";
icon = "briefcase";
color = "blue";
}
];
};
Cookies = {
Behavior = "reject-tracker-and-partition-foreign";
BehaviorPrivateBrowsing = "reject";
Locked = true;
};
DefaultDownloadDirectory = "\${home}/Downloads";
DisableAppUpdate = true;
DisableFirefoxAccounts = true;
DisableFirefoxScreenshots = true;
DisableFirefoxStudies = true;
DisableFormHistory = true;
DisablePocket = true;
DisableProfileImport = true;
DisableSetDesktopBackground = true;
DisableSystemAddonUpdate = true;
DisableTelemetry = true;
DisplayBookmarksToolbar = "never";
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";
};
"uBlock0@raymondhill.net" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
};
"addon@simplelogin" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/simplelogin/latest.xpi";
};
"{8446b178-c865-4f5c-8ccc-1d7887811ae3}" = {
installation_mode = "force_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/catppuccin-mocha-lavender-git/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 = true;
OfferToSaveLogins = false;
PasswordManagerEnabled = false;
PDFjs = {Enabled = false;};
Permissions = {
Autoplay = {
Default = "block-audio-video";
};
};
PictureInPicture = {Enabled = true;};
PopupBlocking = {Default = true;};
Preferences = {
"browser.bookmarks.addedImportButton" = false;
"browser.bookmarks.showMobileBookmarks" = false;
"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";
}
];
"browser.search.region" = "GB";
"browser.warnOnQuitShortcut" = false;
"extensions.activeThemeID" = "{c6698fd1-fe9b-4eae-95d5-fe1703820469}";
"intl.accept_languages" = "en-gb,en";
"intl.locale.requested" = "en-gb,en";
"intl.regional_prefs.use_os_locales" = false;
"media.eme.enabled" = true;
};
RequestedLocales = ["en-GB"];
SearchBar = "unified";
ShowHomeButton = true;
StartDownloadsInTempDirectory = true;
};
};
}

View file

@ -1,17 +0,0 @@
{...}: {
imports = [./desktop.nix ./games.nix];
services = {
greetd.settings = let
command = ''
gamescope\
--nested-refresh 60\
--scaler auto --filter fsr --fsr-sharpness 10\
--hide-cursor-delay 5 --steam -- steam -gamepadui
'';
in {
default_session = {inherit command;};
initial_session = {inherit command;};
};
};
programs.steam.gamescopeSession.enable = true;
}

View file

@ -1,23 +0,0 @@
{pkgs, ...}: {
imports = [./desktop.nix];
environment = {
sessionVariables = {
XDG_SESSION_DESKTOP = "Hyprland";
XDG_CURRENT_DESKTOP = "Hyprland";
};
systemPackages = with pkgs; [
hyprpaper
hyprpicker
];
};
services.greetd.settings = let
command = "Hyprland";
in {
default_session = {inherit command;};
initial_session = {inherit command;};
};
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
}

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