Compare commits

..

3 commits

Author SHA1 Message Date
Evie Litherland-Smith a0b31eddaa Merge branch 'main' into add_niri_compositor 2024-05-27 16:32:58 +01:00
Evie Litherland-Smith 28699d2b27 Add extra fuzzel config 2024-05-27 14:40:23 +01:00
Evie Litherland-Smith a8cab26188 Start on adding Niri wayland compositor
Add some initial config for Fuzzel (dmenu replacement) and
Foot (terminal emulator)
2024-05-27 12:29:35 +01:00
373 changed files with 9777 additions and 2121 deletions

1
.gitignore vendored
View file

@ -7,4 +7,3 @@
__pycache__
.direnv
*.html
/result

View file

@ -1,5 +0,0 @@
repos:
- repo: https://github.com/gitleaks/gitleaks
rev: v8.18.4
hooks:
- id: gitleaks

View file

@ -1,7 +1,9 @@
.PHONY: build
.PHONY: default build switch
USER := $(shell whoami)
HOST := $(shell hostname)
default: build
build:
nix build .#homeConfigurations."$(USER)@$(HOST)".activationPackage
nix run . -- build --flake . --show-trace
switch:
nix run . -- switch --flake . --show-trace

View file

@ -18,7 +18,8 @@ To set up without cloning the repository, run:
gpg -a --export > publickeys.asc
gpg -a --export-secret-keys > privatekeys.asc
# Import key on new machine
gpg --import privatekeys.asc; gpg --import publickeys.asc
gpg --import privatekeys.asc
gpg --import publickeys.asc
# Edit (for each key) to set trust
gpg --edit-key evie@xenia.me.uk
#+end_src
@ -29,9 +30,23 @@ To set up without cloning the repository, run:
* Email setup
** Proton
*** Bridge
Start Proton Mail Bridge application, if needed configure to store
using =SecretService= and log in. Application will auto-start with
plasma session.
Run src_bash{protonmail-setup-bridge} to automate this process.
Run bridge in CLI mode to login, wait for initial sync and get app password
#+begin_src bash
nix run nixpkgs#protonmail-bridge -- -c
# Follow prompts to login and get password
#+end_src
Restart using ~swaymsg~:
#+begin_src bash
nix shell nixpkgs#protonmail-bridge -c swaymsg exec "protonmail-bridge -n"
#+end_src
**** uidvalidity issue
+Remove uid lines from .mbsyncrc (in each mail directory) and delete .uidvalidity, re-run mbsync to fix+
Above might be duplicating mail, faster to just delete local maildirs and let them re-sync.
*** Password
Get password from ~protonmail-bridge~, save to ~password-store~:
#+begin_src bash
@ -66,7 +81,3 @@ On first run (or if token expires), stop systemd service and run manually to com
# Restart again so that service picks up available ports
systemctl --user restart davmail.service
#+end_src
* Flathub setup
#+begin_src bash
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
#+end_src

View file

@ -1,25 +0,0 @@
{
config,
lib,
...
}: {
imports = [
# Programs
./programs/desktop/default.nix
./programs/shell/default.nix
./programs/emacs/default.nix
./programs/browser/default.nix
# Services
./services/email/work.nix # TODO combine again at some point
./services/password-store/default.nix
# Additional Scripts
./scripts/default.nix
];
programs.home-manager.enable = true;
nixpkgs.config.allowUnfree = true;
home = {
username = lib.mkDefault "pixelifytica";
homeDirectory = "/home/${config.home.username}";
stateVersion = "23.05";
};
}

View file

@ -41,16 +41,16 @@
]
},
"locked": {
"lastModified": 1718530513,
"narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=",
"lastModified": 1715381426,
"narHash": "sha256-wPuqrAQGdv3ISs74nJfGb+Yprm23U/rFpcHFFNWgM94=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "a1fddf0967c33754271761d91a3d921772b30d0e",
"rev": "ab5542e9dbd13d0100f8baae2bc2d68af901f4b4",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.05",
"ref": "release-23.11",
"repo": "home-manager",
"type": "github"
}
@ -60,11 +60,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1717786575,
"narHash": "sha256-IyfMwVf4gR8BAhs6pnzZbtGESrG3lV59t25qIq30r8Q=",
"lastModified": 1710589819,
"narHash": "sha256-fm69qycthevGExpbudpuCCSEBPuCOk/+d15382c37oE=",
"ref": "refs/heads/main",
"rev": "8848d889ab9089dff04a3ffc80d2cc8a61d545c4",
"revCount": 12,
"rev": "6e305fa1d05a97343d47f0b6865e10a870fc8d4e",
"revCount": 10,
"type": "git",
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
},
@ -75,11 +75,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1717602782,
"narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=",
"lastModified": 1710451336,
"narHash": "sha256-pP86Pcfu3BrAvRO7R64x7hs+GaQrjFes+mEPowCfkxY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "e8057b67ebf307f01bdcc8fba94d94f75039d1f6",
"rev": "d691274a972b3165335d261cc4671335f5c67de9",
"type": "github"
},
"original": {
@ -91,61 +91,37 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1718835956,
"narHash": "sha256-wM9v2yIxClRYsGHut5vHICZTK7xdrUGfrLkXvSuv6s4=",
"lastModified": 1716361217,
"narHash": "sha256-mzZDr00WUiUXVm1ujBVv6A0qRd8okaITyUp4ezYRgc4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "dd457de7e08c6d06789b1f5b88fc9327f4d96309",
"rev": "46397778ef1f73414b03ed553a3368f0e7e33c2f",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.05",
"ref": "nixos-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"plasma-manager": {
"inputs": {
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1719302143,
"narHash": "sha256-PMtSsKvbgfoI5+rb7UBIBfIwQ4Zvjt1iChWwQL+BkGo=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "a3b881f62eb3aabb97e4fc68041ef34e8029e186",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "plasma-manager",
"type": "github"
}
},
"root": {
"inputs": {
"base16": "base16",
"home-manager": "home-manager",
"iosevka-custom": "iosevka-custom",
"nixpkgs": "nixpkgs_2",
"plasma-manager": "plasma-manager",
"tt-schemes": "tt-schemes"
}
},
"tt-schemes": {
"flake": false,
"locked": {
"lastModified": 1718992165,
"narHash": "sha256-9i9IjZcjvinb/214x5YShUDBZBC2189HYs26uGy/Hck=",
"lastModified": 1713388094,
"narHash": "sha256-wcotm0Ek2ISn8iJBzEujJQdcPLKWrPAOZ/dS/DLKafw=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "ef9a4c3c384624694608adebf0993d7a3bed3cf2",
"rev": "abcf2a055ae69f1bf047463332f83db3125aa8a5",
"type": "github"
},
"original": {

142
flake.nix
View file

@ -7,18 +7,11 @@
};
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
url = "github:nix-community/home-manager/release-23.11";
inputs.nixpkgs.follows = "nixpkgs";
};
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs = {
nixpkgs.follows = "nixpkgs";
home-manager.follows = "home-manager";
};
};
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
base16.url = "github:SenchoPens/base16.nix";
tt-schemes = {
@ -31,19 +24,19 @@
self,
nixpkgs,
home-manager,
plasma-manager,
iosevka-custom,
base16,
tt-schemes,
...
}: let
defaultExtraSpecialArgs = {
hostname,
system,
system ? "x86_64-linux",
hostname ? "Atlas",
...
}: rec {
inherit hostname;
inherit (plasma-manager.packages.${system}) rc2nix;
accentColourName = "base0C";
accentColour = "base07"; # catppuccin lavender
catppuccinVariant = "Mocha";
iosevkaCustom = {
packages = iosevka-custom.outputs.packages.${system};
names = iosevka-custom.outputs.names;
@ -66,11 +59,17 @@
};
};
};
defaultModules = [
plasma-manager.homeManagerModules.plasma-manager
defaultModules = {
username ? "pixelifytica",
hostname ? "Atlas",
...
}: [
base16.homeManagerModule
{scheme = "${tt-schemes}/base16/one-light.yaml";}
./default.nix
./home/${hostname}.nix
({...}: {
home = {inherit username;};
scheme = "${tt-schemes}/base16/catppuccin-mocha.yaml";
})
];
in {
packages.x86_64-linux = {inherit (home-manager.packages.x86_64-linux) default;};
@ -82,67 +81,78 @@
pkgs = import nixpkgs {system = "x86_64-linux";};
in
pkgs.mkShellNoCC {
packages = with pkgs; [nil pre-commit];
shellHook = "pre-commit install --install-hooks";
packages = [pkgs.nil];
};
homeConfigurations = {
# Server
"pixelifytica@Legion" = let
hostname = "Legion";
# Fallback entry
pixelifytica = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {system = "x86_64-linux";};
modules = defaultModules {
username = "pixelifytica";
hostname = "Atlas";
};
extraSpecialArgs = defaultExtraSpecialArgs {
system = "x86_64-linux";
in
home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {inherit system;};
modules = defaultModules;
extraSpecialArgs = defaultExtraSpecialArgs {inherit hostname system;};
hostname = "Atlas";
};
};
# Server
"pixelifytica@Legion" = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {system = "x86_64-linux";};
modules = defaultModules {
username = "pixelifytica";
hostname = "Legion";
};
extraSpecialArgs = defaultExtraSpecialArgs {
system = "x86_64-linux";
hostname = "Legion";
};
};
# Personal
"pixelifytica@Northstar" = let
"pixelifytica@Northstar" = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {system = "x86_64-linux";};
modules = defaultModules {
username = "pixelifytica";
hostname = "Northstar";
system = "x86_64-linux";
in
home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {inherit system;};
modules =
defaultModules
++ [
./personal.nix
{programs.plasma.configFile.kcminputrc."Libinput/1739/52759/SYNA32AA:00 06CB:CE17 Touchpad".NaturalScroll = true;}
];
extraSpecialArgs = defaultExtraSpecialArgs {inherit hostname system;};
};
"pixelifytica@Vanguard" = let
hostname = "Vanguard";
extraSpecialArgs = defaultExtraSpecialArgs {
system = "x86_64-linux";
in
home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {inherit system;};
modules = defaultModules ++ [./personal.nix];
extraSpecialArgs = defaultExtraSpecialArgs {inherit hostname system;};
hostname = "Northstar";
};
};
"pixelifytica@Vanguard" = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {system = "x86_64-linux";};
modules = defaultModules {
username = "pixelifytica";
hostname = "Vanguard";
};
extraSpecialArgs = defaultExtraSpecialArgs {
system = "x86_64-linux";
hostname = "Vanguard";
};
};
# Work
"elitherl@Tone" = let
"elitherl@Tone" = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {system = "x86_64-linux";};
modules = defaultModules {
username = "elitherl";
hostname = "Tone";
system = "x86_64-linux";
in
home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {inherit system;};
modules =
defaultModules
++ [
./work.nix
{programs.plasma.configFile.kcminputrc."Libinput/1160/4132/DELL0A21:00 0488:1024 Touchpad".NaturalScroll = true;}
];
extraSpecialArgs = defaultExtraSpecialArgs {inherit hostname system;};
};
"elitherl@Scorch" = let
hostname = "Scorch";
extraSpecialArgs = defaultExtraSpecialArgs {
system = "x86_64-linux";
in
home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {inherit system;};
modules = defaultModules ++ [./work.nix];
extraSpecialArgs = defaultExtraSpecialArgs {inherit hostname system;};
hostname = "Tone";
};
};
"elitherl@Scorch" = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {system = "x86_64-linux";};
modules = defaultModules {
username = "elitherl";
hostname = "Scorch";
};
extraSpecialArgs = defaultExtraSpecialArgs {
system = "x86_64-linux";
hostname = "Scorch";
};
};
};
};

1
home/Atlas.nix Normal file
View file

@ -0,0 +1 @@
{...}: {imports = [./default.nix];}

1
home/Legion.nix Normal file
View file

@ -0,0 +1 @@
{...}: {imports = [./default.nix];}

8
home/Northstar.nix Normal file
View file

@ -0,0 +1,8 @@
{...}: {
imports = [./default.nix];
wayland.windowManager.sway.config.output = {
"eDP-1" = {
scale = "1.25";
};
};
}

9
home/Scorch.nix Normal file
View file

@ -0,0 +1,9 @@
{...}: {
imports = [./work.nix];
wayland.windowManager.sway.config.output = {
"Dell Inc. DELL P3223QE CCG8YN3" = {
pos = "0 0";
scale = "1.5";
};
};
}

35
home/Tone.nix Normal file
View file

@ -0,0 +1,35 @@
{...}: {
imports = [./work.nix];
wayland.windowManager.sway.config.output = {
"eDP-1".scale = "1.25";
"Dell Inc. DELL P3223QE CCG8YN3".scale = "1.5";
};
services.kanshi = {
enable = true;
systemdTarget = "sway-session.target";
profiles = {
undocked = {
outputs = [
{
criteria = "eDP-1";
status = "enable";
scale = 1.25;
}
];
};
docked = {
outputs = [
{
criteria = "Dell Inc. DELL P3223QE CCG8YN3";
status = "enable";
scale = 1.5;
}
{
criteria = "eDP-1";
status = "disable";
}
];
};
};
};
}

37
home/Vanguard.nix Normal file
View file

@ -0,0 +1,37 @@
{pkgs, ...}: {
imports = [
./default.nix
../programs/games/default.nix
];
home.packages = with pkgs; [
blender
freecad
prusa-slicer
];
wayland.windowManager.sway.config = {
startup = [
{command = "${pkgs.xorg.xrandr}/bin/xrandr --output DP-2 --primary";}
];
output = {
"Acer Technologies ED270R TJMEE0043W01" = {
mode = "1920x1080@165Hz";
pos = "1080 420";
adaptive_sync = "off";
};
"Ancor Communications Inc VS278 FALMQS032358" = {
pos = "0 0";
transform = "270";
};
};
workspaceOutputAssign = [
{
output = "HDMI-A-1";
workspace = "1";
}
];
};
programs.waybar.settings = {
main.output = ["DP-2"];
alt.output = ["HDMI-A-1"];
};
}

115
home/default.nix Normal file
View file

@ -0,0 +1,115 @@
{
config,
lib,
pkgs,
...
}: {
imports = [
# Programs
../programs/sway/default.nix
../programs/shell/default.nix
../programs/emacs/default.nix
../programs/nyxt/default.nix
../programs/firefox/default.nix
../programs/cava/default.nix
../programs/obs/default.nix
../programs/python/default.nix
../programs/lua/default.nix
# Services
../services/email/work.nix # TODO combine again at some point
../services/password-store/default.nix
# Additional Scripts
../scripts/default.nix
];
programs.home-manager.enable = true;
nixpkgs.config.allowUnfree = true;
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";
variant = "Mocha";
in {
enable = true;
iconTheme = {
package = pkgs.catppuccin-papirus-folders.override {
accent = toLower accent;
flavor = toLower variant;
};
name = "Papirus-Dark";
};
cursorTheme = {
package = pkgs.catppuccin-cursors."${toLower variant}Dark";
name = "Catppuccin-${variant}-Dark-Cursors";
size = 32;
};
theme = let
size = "Standard";
in {
package = pkgs.catppuccin-gtk.override {
accents = [(toLower accent)];
size = toLower size;
variant = toLower variant;
};
name = "Catppuccin-${variant}-${size}-${accent}-Dark";
};
};
xdg = {
userDirs = {
enable = true;
createDirectories = true;
extraConfig = {
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
};
};
};
xresources.properties = with config.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;
};
home = {
homeDirectory = "/home/${config.home.username}";
packages = with pkgs; [
gnumake
git-sync
pinentry
fd
ripgrep
ffmpeg
mpv
evince
libreoffice-fresh
inkscape
webcord
signal-desktop
whatsapp-for-linux
teams-for-linux
nomachine-client
];
stateVersion = "23.05";
};
}

19
home/work.nix Normal file
View file

@ -0,0 +1,19 @@
{
config,
lib,
pkgs,
...
}: {
imports = [./default.nix];
home.packages = [
(pkgs.writeShellScriptBin "ukaea-vpn-connect" "sudo ${pkgs.openfortivpn}/bin/openfortivpn -c ${./ukaea-vpn.conf}")
];
programs = {
git.userEmail = config.accounts.email.accounts.outlook.address;
firefox.policies.Homepage.URL = "https://nucleus.ukaea.uk";
};
accounts.email.accounts = {
proton.primary = lib.mkForce false;
outlook.primary = lib.mkForce true;
};
}

View file

@ -1,18 +0,0 @@
{pkgs, ...}: {
imports = [
# Programs
./programs/games/default.nix
./programs/streaming/default.nix
];
home = {
username = "pixelifytica";
packages = with pkgs;
with kdePackages; [
blender
freecad
prusa-slicer
ktorrent
noson
];
};
}

View file

@ -1,203 +0,0 @@
[
{ "name": "Mastodon", "url": "https://tech.lgbt", "tags": ["Social"] },
{
"name": "ABRP",
"url": "https://abetterrouteplanner.com/",
"tags": ["Travel"]
},
{
"name": "Forgejo",
"url": "https://git.xenia.me.uk",
"tags": ["Software", "Git", "Personal"]
},
{
"name": "GitHub",
"url": "https://github.com",
"tags": ["Software", "Git"]
},
{
"name": "CCFE GitLab",
"url": "https://git.ccfe.ac.uk",
"tags": ["Software", "Git", "Work"]
},
{
"name": "NixOS Manual",
"url": "https://nixos.org/manual/nixpkgs/stable/",
"tags": ["Software", "Documentation", "Ni"]
},
{
"name": "NixOS and Flakes",
"url": "https://nixos-and-flakes.thiscute.world/",
"tags": ["Software", "Documentation", "Nix"]
},
{
"name": "Home Manager",
"url": "https://nix-community.github.io/home-manager/options.xhtml",
"tags": ["Software", "Documentation", "Nix"]
},
{
"name": "KDE Plasma Desktop Scripting",
"url": "https://develop.kde.org/docs/plasma/scripting/",
"tags": ["Software", "Documentation", "KDE", "Plasma"]
},
{
"name": "Awesome Emacs",
"url": "https://github.com/emacs-tw/awesome-emacs",
"tags": ["Software", "Repositories"]
},
{
"name": "Awesome Wayland",
"url": "https://github.com/natpen/awesome-wayland",
"tags": ["Software", "Repositories"]
},
{
"name": "NixOS Wiki",
"url": "https://nixos.wiki",
"tags": ["Wiki"]
},
{
"name": "Arch Wiki",
"url": "https://wiki.archlinux.org",
"tags": ["Wiki"]
},
{
"name": "Homepage",
"url": "https://wiki.jetdata.eu/open/index.php?title=Main_Page",
"tags": ["Wiki", "OpenWiki"]
},
{
"name": "Diagnostic Coordinator",
"url": "https://wiki.jetdata.eu/open/index.php?title=Diagnostic_Coordinator_Wiki",
"tags": ["Wiki", "OpenWiki"]
},
{
"name": "Spectroscopy Group",
"url": "https://wiki.jetdata.eu/open/index.php?title=Spectroscopy_Group:index",
"tags": ["Wiki", "OpenWiki"]
},
{
"name": "KS5 Wiki",
"url": "https://wiki.jetdata.eu/open/index.php?title=CXS:Topic3",
"tags": ["Wiki", "OpenWiki"]
},
{
"name": "KT3 Journals",
"url": "https://wiki.jetdata.eu/open/index.php?title=KT3_Journals",
"tags": ["Wiki", "OpenWiki"]
},
{
"name": "Nucleus",
"url": "https://nucleus.ukaea.uk/",
"tags": ["Work"]
},
{
"name": "Marval",
"url": "https://marval.service.ukaea.uk/MSMSelfService/Index.aspx",
"tags": ["Work"]
},
{
"name": "U4BW",
"url": "https://ubw.unit4cloud.com/uk_aea_prod_web/Login/Login.aspx",
"tags": ["Work"]
},
{
"name": "UKAEA Pinboard",
"url": "https://pinboard.ukaea.uk/",
"tags": ["Work"]
},
{
"name": "OPEN-ADAS",
"url": "https://open.adas.ac.uk/",
"tags": ["Work"]
},
{
"name": "Homepage",
"url": "http://w3.jet.uk",
"tags": ["Work", "JET"]
},
{
"name": "Physics Summary",
"url": "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php",
"tags": ["Work", "JET"]
},
{
"name": "JSPO Reports",
"url": "https://www.jspo.jet.uk/pages/operations/jpecreports_2023.html",
"tags": ["Work", "JET"]
},
{
"name": "DVCM Homepage",
"url": "https://dvcm.jetdata.eu/",
"tags": ["Work", "JET"]
},
{
"name": "JET Data Services",
"url": "https://data.jet.uk",
"tags": ["Work", "JET", "Data"]
},
{
"name": "PPF Query",
"url": "https://data.jet.uk/ppf/browse/ppfquery",
"tags": ["Work", "JET", "Data"]
},
{
"name": "ReqCo",
"url": "https://data.jet.uk/reqco/myrequests",
"tags": ["Work", "JET", "Data"]
},
{
"name": "Countdown Mimic",
"url": "http://webmimic.jet.uk/mc/codas/countdown",
"tags": ["Work", "JET", "Mimic"]
},
{
"name": "KS5 Mimic",
"url": "http://webmimic.jet.uk/DG/codas/ks5.mim.html",
"tags": ["Work", "JET", "Mimic"]
},
{
"name": "KT3 Mimic",
"url": "http://webmimic.jet.uk/DG/codas/kt3spec.mim.html",
"tags": ["Work", "JET", "Mimic"]
},
{
"name": "Users Page",
"url": "https://users.mastu.ukaea.uk/home",
"tags": ["Work", "MAST-U"]
},
{
"name": "Diagnostic Handbook",
"url": "https://intranet.ccfe.ac.uk/mastu-handbook",
"tags": ["Work", "MAST-U"]
},
{
"name": "Data Access and Tools",
"url": "https://users.mastu.ukaea.uk/data-access-and-tools",
"tags": ["Work", "MAST-U"]
},
{
"name": "Outlook Calendar",
"url": "https://outlook.office.com/calendar/view/workweek",
"tags": ["Work", "Office"]
},
{
"name": "Teams",
"url": "https://teams.microsoft.com/v2",
"tags": ["Work", "Office"]
},
{
"name": "OneDrive",
"url": "https://ukaeauk-my.sharepoint.com/personal/evie_litherland-smith_ukaea_uk/",
"tags": ["Work", "Office"]
},
{
"name": "Sharepoint",
"url": "https://ukaeauk.sharepoint.com/",
"tags": ["Work", "Office"]
},
{
"name": "NHS App",
"url": "https://www.nhsapp.service.nhs.uk/login",
"tags": ["Personal", "NHS"]
}
]

View file

@ -1,6 +0,0 @@
{...}: {
imports = [
./nyxt.nix
./firefox.nix
];
}

View file

@ -1,65 +0,0 @@
{
config,
pkgs,
fonts,
accentColourName,
...
}: {
home.packages = [pkgs.nyxt];
xdg = {
configFile = {
"nyxt/config.lisp".text = let
sc = config.scheme.withHashtag;
in ''
;; Import custom configuration
(nyxt::load-lisp "${./config.lisp}")
;; Define custom theme
(define-configuration browser
((theme (make-instance 'theme:theme
:dark-p t
:font-family "${fonts.sansSerif.name}"
:monospace-font-family "${fonts.monospace.name}"
:background-color "${sc.base00}"
:on-background-color "${sc.base05}"
:primary-color "${sc.base02}"
:on-primary-color "${sc.base05}"
:secondary-color "${sc.base03}"
:on-secondary-color "${sc.base05}"
:accent-color "${sc.${accentColourName}}"
:on-accent-color "${sc.base01}"
:action-color "${sc.cyan}"
:on-action-color "${sc.base01}"
:success-color "${sc.green}"
:on-success-color "${sc.base01}"
:highlight-color "${sc.magenta}"
:on-highlight-color "${sc.base01}"
:warning-color "${sc.yellow}"
:on-warning-color "${sc.base01}"
:codeblock-color "${sc.base02}"
:on-codeblock-color "${sc.base05}"))))
'';
};
dataFile."nyxt/bookmarks.lisp".text = let
# Make a string of lisp-style list of strings, from nix-style
# list
convertTags = tags: "(" + (builtins.foldl' (x: y: x + " \"" + y + "\"") "" tags) + " )";
# Take bookmarks as returned from JSON file and convert to NYXT
# expected format
convertBookmark = {
name,
tags,
url,
}: "(:url \"${url}\" :title \"${name}\" :tags ${convertTags tags})\n";
in (
# Fold all entries in bookmarks.json into single string of NYXT
# format bookmarks, each entry on a new line and with 2 space
# indentation, just for visual clarity if reading the outputted
# file
"(\n"
+ (builtins.foldl'
(x: y: x + " " + convertBookmark y) ""
(builtins.fromJSON (builtins.readFile ./bookmarks.json)))
+ ")"
);
};
}

17
programs/cava/default.nix Normal file
View file

@ -0,0 +1,17 @@
{config, ...}: {
programs.cava = {
enable = true;
settings = {
color = with config.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,71 +0,0 @@
{
config,
fonts,
...
}: {
programs.alacritty = {
enable = true;
settings = {
font = {
size = fonts.sizes.applications;
normal = {
family = fonts.monospace.name;
style = "Regular";
};
};
window = {
dynamic_title = true;
padding = {
x = 10;
y = 10;
};
# decorations = "none";
# opacity = 0.9;
};
live_config_reload = true;
selection.save_to_clipboard = true;
mouse.hide_when_typing = true;
colors = let
mapColours = isBright: (builtins.listToAttrs (builtins.map (col: {
# Alacritty uses Yellow instead of Orange for BASE09
name =
if col == "orange"
then "yellow"
else col;
value = "0x${config
.scheme
.${
if isBright
then "bright-${col}"
else col
}}";
})
["red" "orange" "green" "cyan" "blue" "magenta"]));
mapNamedColours = mapColours false;
mapNamedBrightColours = mapColours true;
in {
draw_bold_text_with_bright_colors = false;
primary = with config.scheme; {
background = "0x${base00}";
foreground = "0x${base05}";
};
cursor = with config.scheme; {
cursor = "0x${base05}";
text = "0x${base00}";
};
normal = with config.scheme;
{
black = "0x${base00-hex}";
white = "0x${base05-hex}";
}
// mapNamedColours;
bright = with config.scheme;
{
black = "0x${base03-hex}";
white = "0x${base07-hex}";
}
// mapNamedBrightColours;
};
};
};
}

View file

@ -1,19 +0,0 @@
{
config,
accentColourName,
...
}: {
services.avizo = {
enable = true;
settings.default = let
sc = config.scheme;
rgba = colourName: "${sc."${colourName}-rgb-r"}, ${sc."${colourName}-rgb-g"}, ${sc."${colourName}-rgb-b"}";
in {
background = "rgba(${rgba "base00"}, 0.9)";
bar-bg-color = "rgba(${rgba "base00"}, 0.9)";
bar-fg-color = "rgba(${rgba "base05"}, 1.0)";
border-color = "rgba(${rgba accentColourName}, 1.0)";
image-opacity = "1.0";
};
};
}

View file

@ -1,35 +0,0 @@
{
config,
pkgs,
...
}: {
imports = [
./plasma6/default.nix
./alacritty/default.nix
];
home.packages = with pkgs; [
libreoffice-fresh
inkscape
webcord
kdePackages.krdc
];
services.syncthing.enable = true;
programs.mpv.enable = true;
xdg = {
mime.enable = true;
mimeApps = let
defaultApplications = import ./mimeapps.nix;
in {
enable = true;
inherit defaultApplications;
associations.added = defaultApplications;
};
userDirs = {
enable = true;
createDirectories = true;
extraConfig = {
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
};
};
};
}

View file

@ -1,26 +0,0 @@
{
config,
fonts,
accentColourName,
...
}: {
services.mako = let
sc = config.scheme.withHashtag;
in {
enable = true;
anchor = "top-right";
font = "${fonts.monospace.name} ${toString fonts.sizes.popups}";
layer = "top";
markup = true;
maxVisible = 10;
icons = true;
iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}";
textColor = "${sc.base05}ff";
progressColor = "over ${sc.red}ff";
backgroundColor = "${sc.base00}cc";
borderColor = "${sc.${accentColourName}}ff";
borderRadius = 10;
borderSize = 1;
defaultTimeout = 0;
};
}

View file

@ -1,77 +0,0 @@
let
emacs = ["emacsclient.desktop" "emacs.desktop"];
browser = ["firefox.desktop" "nyxt.desktop"];
in {
"inode/directory" = ["thunar.desktop"];
"inode/symlink" = ["thunar.desktop"];
"image/jpeg" = ["swayimg.desktop"];
"image/png" = ["swayimg.desktop"];
"video/mp4" = ["mpv.desktop"];
"text/plain" = emacs;
"text/richtext" = emacs;
"text/org" = emacs;
"text/markdown" = emacs;
"text/rust" = emacs;
"text/csv" = emacs;
"text/html" = emacs;
"text/css" = emacs;
"text/tab-separated-values" = emacs;
"text/x-emacs-lisp" = emacs;
"text/x-fortran" = emacs;
"text/x-idl" = emacs;
"text/x-log" = emacs;
"text/x-lua" = emacs;
"text/x-makefile" = emacs;
"text/x-cmake" = emacs;
"text/x-python" = emacs;
"text/x-python3" = emacs;
"text/x-readme" = emacs;
"text/x-scheme" = emacs;
"text/x-tex" = emacs;
"text/x-texinfo" = emacs;
"application/json" = emacs;
"application/toml" = emacs;
"application/yaml" = emacs;
"application/xml" = emacs;
"application/rss+xml" = emacs;
"application/xhtml+xml" = emacs;
"application/oxps" = emacs;
"application/x-shellscript" = emacs;
"application/x-docbook+xml" = emacs;
"application/x-yaml" = emacs;
"application/pdf" = ["evince.desktop"];
"application/epub+zip" = ["evince.desktop"];
"application/msword" = ["writer.desktop"];
"application/zip" = ["xarchiver.desktop"];
"application/x-extension-htm" = browser;
"application/x-extension-html" = browser;
"application/x-extension-shtml" = browser;
"application/x-extension-xhtml" = browser;
"application/x-extension-xht" = browser;
"application/x-mozilla-bookmarks" = browser;
"application/x-zoom" = ["Zoom.desktop"] ++ browser;
"x-scheme-handler/http" = browser;
"x-scheme-handler/https" = browser;
"x-scheme-handler/about" = browser;
"x-scheme-handler/chrome" = browser;
"x-scheme-handler/webcal" = browser;
"x-scheme-handler/geo" = ["openstreetmap-geo-handler.desktop"];
"x-scheme-handler/mailto" = ["emacsclient-mail.desktop"];
"x-scheme-handler/unknown" = emacs;
"x-scheme-handler/prusaslicer" = ["PrusaSlicerURLProtocol.desktop"];
"x-scheme-handler/ms-word" = ["writer.desktop"];
"x-scheme-handler/ms-powerpoint" = ["impress.desktop"];
"x-scheme-handler/ms-excel" = ["calc.desktop"];
"x-scheme-handler/msteams" = ["teams-for-linux.desktop"] ++ browser;
"x-scheme-handler/zoomus" = ["Zoom.desktop"] ++ browser;
"x-scheme-handler/zoommtg" = ["Zoom.desktop"] ++ browser;
}

View file

@ -1,186 +0,0 @@
input {
keyboard {
xkb {
layout "gb"
options "grp:win_space_toggle,compose:ralt,ctrl:nocaps"
}
}
touchpad {
tap
natural-scroll
}
warp-mouse-to-focus
}
layout {
gaps 16
center-focused-column "never"
preset-column-widths {
proportion 0.5
proportion 0.75
}
default-column-width { proportion 0.75; }
focus-ring {
off
width 1
active-color "#7fc8ff"
inactive-color "#505050"
}
border {
off
width 1
active-color "#ffc87f"
inactive-color "#505050"
}
struts {
left 64
right 64
}
}
cursor {
xcursor-theme "volantes_cursors"
xcursor-size 32
}
prefer-no-csd
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
spawn-at-startup "set-background"
binds {
Mod+Shift+Slash { show-hotkey-overlay; }
Super+Alt+L { spawn "swaylockfx"; }
Mod+F1 { spawn "swaylockfx"; }
Mod+P { spawn "wlogout"; }
Mod+D { spawn "fuzzel"; }
Mod+Return { spawn "alacritty"; }
Mod+Shift+Return { spawn "emacsclient" "-c"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn "volumectl" "-u" "+" "5"; }
XF86AudioLowerVolume allow-when-locked=true { spawn "volumectl" "-u" "-" "5"; }
XF86AudioMute allow-when-locked=true { spawn "volumectl" "%"; }
XF86AudioMicMute allow-when-locked=true { spawn "volumectl" "-m" "%"; }
XF86MonBrightnessUp allow-when-locked=true { spawn "lightctl" "+" "5"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "lightctl" "-" "5"; }
Mod+Q { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
Mod+Up { focus-window-up; }
Mod+Right { focus-column-right; }
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+Left { move-column-left; }
Mod+Ctrl+Down { move-window-down; }
Mod+Ctrl+Up { move-window-up; }
Mod+Ctrl+Right { move-column-right; }
Mod+Ctrl+H { move-column-left; }
Mod+Ctrl+J { move-window-down; }
Mod+Ctrl+K { move-window-up; }
Mod+Ctrl+L { move-column-right; }
Mod+Home { focus-column-first; }
Mod+End { focus-column-last; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Shift+Left { focus-monitor-left; }
Mod+Shift+Down { focus-monitor-down; }
Mod+Shift+Up { focus-monitor-up; }
Mod+Shift+Right { focus-monitor-right; }
Mod+Shift+H { focus-monitor-left; }
Mod+Shift+J { focus-monitor-down; }
Mod+Shift+K { focus-monitor-up; }
Mod+Shift+L { focus-monitor-right; }
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
Mod+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; }
Mod+U { focus-workspace-down; }
Mod+I { focus-workspace-up; }
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
Mod+Ctrl+U { move-column-to-workspace-down; }
Mod+Ctrl+I { move-column-to-workspace-up; }
Mod+Shift+Page_Down { move-workspace-down; }
Mod+Shift+Page_Up { move-workspace-up; }
Mod+Shift+U { move-workspace-down; }
Mod+Shift+I { move-workspace-up; }
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Ctrl+1 { move-column-to-workspace 1; }
Mod+Ctrl+2 { move-column-to-workspace 2; }
Mod+Ctrl+3 { move-column-to-workspace 3; }
Mod+Ctrl+4 { move-column-to-workspace 4; }
Mod+Ctrl+5 { move-column-to-workspace 5; }
Mod+Ctrl+6 { move-column-to-workspace 6; }
Mod+Ctrl+7 { move-column-to-workspace 7; }
Mod+Ctrl+8 { move-column-to-workspace 8; }
Mod+Ctrl+9 { move-column-to-workspace 9; }
Mod+Comma { consume-window-into-column; }
Mod+Period { expel-window-from-column; }
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+R { switch-preset-column-width; }
Mod+Shift+R { reset-window-height; }
Mod+F { maximize-column; }
Mod+Shift+F { fullscreen-window; }
Mod+C { center-column; }
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; }
Print { screenshot; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
Mod+Shift+E { quit; }
Mod+Shift+P { power-off-monitors; }
}

View file

@ -1,4 +0,0 @@
{pkgs, ...}: {
xdg.configFile."niri/config.kdl".source = ./config.kdl;
home.packages = with pkgs; [playerctl];
}

View file

@ -1,217 +0,0 @@
{
pkgs,
fonts,
rc2nix,
...
}: {
imports = [./konsole.nix];
home.packages = with pkgs; [
rc2nix
wl-clipboard
volantes-cursors
(papirus-icon-theme.override {color = "breeze";})
];
services.gpg-agent.pinentryPackage = pkgs.pinentry-qt;
programs.plasma = {
enable = true;
overrideConfig = true;
workspace = {
clickItemTo = "open";
lookAndFeel = "org.kde.breeze.desktop";
theme = "breeze-light";
colorScheme = "BreezeLight";
cursor = {
theme = "volantes_cursors";
size = 32;
};
iconTheme = "Papirus";
wallpaper = "${../wallpapers/landscapes/tropic_island_day.jpg}";
};
fonts = let
general = {
family = fonts.sansSerif.name;
pointSize = 12;
};
small = {
inherit (general) family;
pointSize = general.pointSize - 2;
};
fixedWidth = {
family = fonts.monospace.name;
pointSize = 12;
};
in {
inherit general small fixedWidth;
menu = general;
toolbar = general;
windowTitle = small;
};
hotkeys.commands = {
"launch-emacs" = {
name = "Launch Emacs Client Window";
key = "Meta+Alt+X";
command = "emacsclient -c";
};
};
panels = [
{
height = 32;
lengthMode = "fill";
location = "bottom";
alignment = "center";
hiding = "normalpanel";
floating = true;
widgets = [
{
name = "org.kde.plasma.kickoff";
config.General = {
icon = "nix-snowflake";
primaryActions = "0";
favoritesDisplay = "0";
applicationsDisplay = "1";
pin = "true";
showActionButtonCaptions = "true";
compactMode = "false";
};
}
{
name = "org.kde.plasma.icontasks";
config.General = {
maxStripes = "1";
showToolTips = "true";
launchers = [
"applications:systemsettings.desktop"
"applications:org.kde.konsole.desktop"
"preferred://filemanager"
"preferred://browser"
];
};
}
{
name = "org.kde.plasma.pager";
config.General = {
showWindowIcons = "true";
showOnlyCurrentScreen = "false";
wrapPage = "true";
};
}
"org.kde.plasma.cameraindicator"
{
systemTray = {
icons = {
spacing = "small";
scaleToFit = false;
};
};
}
{
digitalClock = {
date = {
enable = true;
format = "isoDate";
position = "besideTime";
};
time = {
format = "24h";
showSeconds = "onlyInTooltip";
};
calendar.showWeekNumbers = true;
};
}
{
name = "org.kde.plasma.userswitcher";
config.General = {
showFace = "true";
showName = "false";
showFullName = "true";
showTechnicalInfo = "true";
};
}
];
}
];
shortcuts = {
ksmserver = {
"Lock Session" = ["Screensaver" "Meta+Alt+L"];
};
kwin = {
"Walk Through Windows of Current Application" = "Alt+`";
"Walk Through Windows of Current Application (Reverse)" = "Alt+¬";
"ToggleMouseClick" = "Meta+*";
"Expose" = "Meta+,";
"Switch Window Down" = "Meta+J";
"Switch Window Left" = "Meta+H";
"Switch Window Right" = "Meta+L";
"Switch Window Up" = "Meta+K";
};
};
kwin = {
virtualDesktops = {
rows = 1;
number = 4;
};
effects = {
translucency.enable = true;
blur.enable = true;
cube.enable = true;
dimAdminMode.enable = true;
};
};
configFile = {
baloofilerc."Basic Settings"."Indexing-Enabled" = false;
plasmanotifyrc.Notifications.NormalAlwaysOnTop = true;
kcminputrc.Keyboard.NumLock = 1;
krunnerrc.General.FreeFloating = true;
kscreenlockerrc = {
Daemon.Timeout = 15;
Greeter.WallpaperPlugin = "org.kde.potd";
};
klipperrc = {
General = {
SyncClipboards = true;
MaxClipItems = 5;
IgnoreImages = false;
KeepClipboardContents = false;
};
};
kdeglobals = {
General = {
TerminalApplication = "konsole";
TerminalService = "org.kde.konsole.desktop";
};
};
kwinrc = {
Plugins = {
frozenappEnabled = false;
mouseclickEnabled = true;
shakecursorEnabled = true;
};
Windows = {
FocusPolicy = "FocusFollowsMouse";
RollOverDesktops = true;
};
Tiling.padding = 10;
NightColor = {
Active = true;
Mode = "Location";
LatitudeFixed = "51.7";
LongitudeFixed = "-1.2";
};
"Effect-translucency" = {
Inactive = 100;
MoveResize = 80;
Dialogs = 80;
ComboboxPopups = 80;
Menus = 80;
};
};
};
};
}

View file

@ -1,32 +0,0 @@
{
pkgs,
fonts,
...
}: {
home.packages = [pkgs.kdePackages.yakuake];
programs.konsole = {
enable = true;
defaultProfile = "One-Light";
customColorSchemes.onelight = ./onelight.colorscheme;
profiles.onelight = {
name = "One-Light";
colorScheme = "onelight";
font = {
name = fonts.monospace.name;
size = fonts.sizes.terminal;
};
extraConfig = {
"Interaction Options" = {
"TextEditorCmd" = 6;
"TextEditorCmdCustom" = "emacsclient -c +LINE:COLUMN PATH";
"UnderlineFilesEnabled" = "true";
"OpenLinksByDirectClickEnabled" = "true";
};
"Terminal Features" = {
"BlinkingCursorEnabled" = "true";
"VerticalLine" = "false";
};
};
};
};
}

View file

@ -1,100 +0,0 @@
[Background]
Color=250,250,250
[BackgroundFaint]
Color=250,250,250
[BackgroundIntense]
Color=250,250,250
[Color0]
Color=250,250,250
[Color0Faint]
Color=160,161,167
[Color0Intense]
Color=160,161,167
[Color1]
Color=202,18,67
[Color1Faint]
Color=202,18,67
[Color1Intense]
Color=202,18,67
[Color2]
Color=80,161,79
[Color2Faint]
Color=80,161,79
[Color2Intense]
Color=80,161,79
[Color3]
Color=215,95,0
[Color3Faint]
Color=215,95,0
[Color3Intense]
Color=215,95,0
[Color4]
Color=64,120,242
[Color4Faint]
Color=64,120,242
[Color4Intense]
Color=64,120,242
[Color5]
Color=166,38,164
[Color5Faint]
Color=166,38,164
[Color5Intense]
Color=166,38,164
[Color6]
Color=1,132,188
[Color6Faint]
Color=1,132,188
[Color6Intense]
Color=1,132,188
[Color7]
Color=56,58,66
[Color7Faint]
Color=9,10,11
[Color7Intense]
Color=9,10,11
[Foreground]
Color=56,58,66
[ForegroundFaint]
Color=56,58,66
[ForegroundIntense]
Color=56,58,66
[General]
Anchor=0.5,0.5
Blur=true
ColorRandomization=false
Description=One Light
FillStyle=Tile
Opacity=0.9
Wallpaper=
WallpaperFlipType=NoFlip
WallpaperOpacity=1

View file

@ -1,48 +0,0 @@
{
config,
pkgs,
accentColourName,
...
}: {
home.packages = with pkgs; [
(callPackage ./swaylockfx.nix
{swaylock-effects = config.programs.swaylock.package;})
];
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
# Settings are specifically for swaylock-effects
settings = let
sc = config.scheme;
in {
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;
bs-hl-color = sc.base06;
caps-lock-bs-hl-color = sc.base06;
caps-lock-key-hl-color = sc.green;
inside-color = "${sc.base00}cc";
key-hl-color = sc.green;
layout-bg-color = "${sc.base00}cc";
layout-border-color = sc.${accentColourName};
layout-text-color = sc.base05;
ring-color = sc.${accentColourName};
ring-clear-color = sc.base06;
ring-caps-lock-color = sc.base09;
ring-ver-color = sc.blue;
ring-wrong-color = sc.red;
separator-color = sc.base01;
text-color = sc.base05;
text-clear-color = sc.base06;
text-caps-lock-color = sc.base09;
text-ver-color = sc.blue;
text-wrong-color = sc.red;
};
};
}

View file

@ -1,330 +0,0 @@
{
config,
pkgs,
fonts,
accentColourName,
...
}: {
systemd.user.targets.tray.Unit = {
Description = "Home Manager System Tray";
Requires = ["graphical-session.target"];
};
programs.waybar = {
enable = true;
systemd.enable = true;
settings.main = {
name = "main";
layer = "top";
position = "bottom";
# Layout
"modules-left" = [
"sway/workspaces"
"sway/window"
];
"modules-center" = [];
"modules-right" = [
"mpris"
"custom/notification"
"pulseaudio"
"network"
"bluetooth"
"clock#calendar"
"clock"
"backlight"
"battery"
"custom/weather"
"tray"
];
# Module config
"sway/workspaces" = {
format = "{icon}";
format-icons = {
"1" = "󰫃 ";
"2" = "󰫄 ";
"3" = "󰫅 ";
"4" = "󰫆 ";
"5" = "󰫇 ";
"6" = "󰫈 ";
default = "󰋙 ";
urgent = "󰁡 ";
};
all-outputs = false;
persistent-workspaces = {
"1" = [];
"2" = [];
"3" = [];
"4" = [];
"5" = [];
"6" = [];
};
};
"sway/window" = {
"format" = "{title}";
"max-length" = 50;
"rewrite" = {
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
"(alacritty.*)" = " $1";
"(foot.*)" = " $1";
"(.*) - mpv" = "󰦟 $1";
"swayimg: (.*)" = "󰋩 $1";
"(btm)" = " Resource Usage [$1]";
"(cava)" = "󰝚 Music Visualiser [$1]";
"(.*) - Thunar" = "󰝰 $1";
"Mozilla Firefox" = "󰈹 $1";
"(.*) Mozilla Firefox" = "󰈹 $1";
"Nyxt - (.*)" = "󰀹 $1";
"(.*) - Chromium" = "󰊯 $1";
"(Signal.*)" = "󰭹 $1";
"((?:.*)WebCord.*)" = "󰙯 $1";
"(Cartridges.*)" = "󰊗 $1";
"([Ss]team.*)" = "󰓓 $1";
"(Prism Launcher.*)" = "󰍳 Minecraft ($1)";
"(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
makoctl = "${pkgs.mako}/bin/makoctl";
jq = "${pkgs.jq}/bin/jq";
in {
exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo '󱅫 ' ) || echo '󰂚 ' ";
format = "{}";
on-click = "${makoctl} dismiss -a";
interval = 3;
};
"custom/weather" = let
date-format = "%Y-%m-%d";
custom-indicator = "{ICON}{temp_C}({FeelsLikeC})";
in {
format = "{}°";
tooltip = true;
interval = 900; # Every 15 minutes
exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
return-type = "json";
};
tray = {
icon-size = builtins.floor fonts.sizes.popups;
show-passive-items = true;
spacing = 5;
};
};
style = let
sc = config.scheme.withHashtag;
alpha = "0.9";
in ''
* {
all: unset;
font-size: ${toString fonts.sizes.popups};
font-family: ${fonts.monospace.name};
}
window {
background: transparent;
box-shadow: none;
}
window > box {
color: ${sc.base05};
background: alpha(${sc.base00}, ${alpha});
padding: 0px;
border-top: 1px solid ${sc.base04};
}
tooltip {
background: ${sc.base00};
border: 1px solid ${sc.${accentColourName}};
border-radius: 10px;
box-shadow: none;
}
tooltip label {
color: ${sc.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: ${sc.base05};
}
#workspaces button {
background: transparent;
color: ${sc.base05};
margin: 0px;
padding: 0px 5px;
}
#workspaces button.persistent {
color: ${sc.base03};
}
#workspaces button.focused {
color: ${sc.${accentColourName}};
}
#workspaces button.urgent {
color: ${sc.base09};
}
#custom-notification {
color: ${sc.base08};
}
#pulseaudio {
color: ${sc.base09};
}
#network {
color: ${sc.base0A};
}
#bluetooth {
color: ${sc.base0B};
}
#clock.calendar {
color: ${sc.base0C};
}
#clock {
color: ${sc.base0D};
}
'';
};
}

View file

@ -4,56 +4,27 @@
fonts,
...
}: {
imports = [
../shell/default.nix
./python/default.nix
./lua/default.nix
./javascript/default.nix
];
services.emacs = {
enable = true;
package = config.programs.emacs.finalPackage;
defaultEditor = true;
client.enable = true;
socketActivation.enable = true;
startWithUserSession = false;
};
programs.emacs = {
# Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git
# git clone https://git.xenia.me.uk/pixelifytica/emacs.git ~/.emacs.d
# 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}";
font-height = builtins.toString (builtins.floor (builtins.mul fonts.sizes.applications 10));
custom-theme-name = "nix";
custom-theme = pkgs.writeTextFile {
name = "custom-emacs-theme";
destination = "/${custom-theme-name}-theme.el";
text = ''
(deftheme ${custom-theme-name}
"Use Nix customised fonts for main faces")
(custom-theme-set-variables
'${custom-theme-name}
'(menu-bar-mode nil))
(custom-theme-set-faces
'${custom-theme-name}
'(default ((t (:family "${fixed-font-family}" :height ${font-height}))))
'(fixed-pitch ((t (:family "${fixed-font-family}"))))
'(fixed-pitch-serif ((t (:family "${fixed-font-family}"))))
'(variable-pitch ((t (:family "${variable-font-family}")))))
(provide-theme '${custom-theme-name})
'';
};
custom-theme-hash = builtins.hashFile "sha256" "${custom-theme}/${custom-theme-name}-theme.el";
alpha = "90";
in ''
(add-to-list 'custom-theme-load-path "${custom-theme}")
(add-to-list 'custom-safe-themes "${custom-theme-hash}")
(load-theme '${custom-theme-name})
(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}))
(menu-bar-mode -1)
'';
extraPackages = epkgs:
with epkgs; [
@ -107,7 +78,6 @@
flymake-popon
flymake-shellcheck
flymake-yamllint
flymake-eslint
apheleia
envrc
rainbow-delimiters
@ -122,6 +92,7 @@
# org-mode
org-roam
org-noter
org-journal
# org-cite
citar
@ -134,8 +105,6 @@
ibuffer-project
magit
forge
treemacs
treemacs-nerd-icons
# Writing
markdown-mode
@ -144,10 +113,8 @@
auctex-latexmk
latex-preview-pane
# Contacts
bbdb
# Email
mu4e
ement
# RSS feeds
elfeed
@ -155,6 +122,26 @@
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
@ -170,32 +157,29 @@
poppler_utils
# Customised LaTeX install
(texlive.combine
{inherit (pkgs.texlive) scheme-medium dvisvgm dvipng wrapfig amsmath ulem hyperref capt-of;})
(texlive.combine {
inherit (pkgs.texlive) scheme-medium dvisvgm dvipng wrapfig amsmath ulem hyperref capt-of;
})
python3Packages.pygments
# Development tools
## Code screenshots
silicon
# Python is a special case, installed separately
## Language servers
nil
fortls
lua-language-server
nodePackages.bash-language-server
## Linters
shellcheck
yamllint
nodePackages.eslint
## Formatters
alejandra
shfmt
ruff
black
isort
stylua
nodePackages.prettier
## Language servers
nil # Nix lsp
lua-language-server
nodePackages.pyright
nodePackages.typescript-language-server
];
}

View file

@ -1,7 +0,0 @@
{pkgs, ...}: {
home.packages = with pkgs;
with nodePackages; [
nodejs
typescript
];
}

View file

@ -0,0 +1,198 @@
[
{
"name": "Social",
"bookmarks": [{ "name": "Mastodon", "url": "https://tech.lgbt" }]
},
{
"name": "Travel",
"bookmarks": [{ "name": "ABRP", "url": "https://abetterrouteplanner.com/" }]
},
{
"name": "Software",
"bookmarks": [
{
"name": "Git",
"bookmarks": [
{
"name": "Forgejo",
"url": "https://git.xenia.me.uk",
"tags": ["personal"]
},
{ "name": "GitHub", "url": "https://github.com" },
{
"name": "CCFE GitLab",
"url": "https://git.ccfe.ac.uk",
"tags": ["work"]
}
]
},
{
"name": "Documentation",
"bookmarks": [
{
"name": "Nix",
"bookmarks": [
{
"name": "NixOS and Flakes",
"url": "https://nixos-and-flakes.thiscute.world/"
},
{
"name": "Home Manager",
"url": "https://nix-community.github.io/home-manager/options.xhtml"
}
]
},
{ "name": "Emacs", "bookmarks": [] },
{ "name": "Python", "bookmarks": [] },
{ "name": "Lua", "bookmarks": [] }
]
},
{
"name": "Repositories",
"bookmarks": [
{
"name": "Awesome Emacs",
"url": "https://github.com/emacs-tw/awesome-emacs"
}
]
}
]
},
{
"name": "Wikis",
"bookmarks": [
{
"name": "NixOS Wiki",
"url": "https://nixos.wiki"
},
{ "name": "Arch Wiki", "url": "https://wiki.archlinux.org" },
{
"name": "OpenWiki",
"bookmarks": [
{
"name": "Homepage",
"url": "https://wiki.jetdata.eu/open/index.php?title=Main_Page"
},
{
"name": "Diagnostic Coordinator",
"url": "https://wiki.jetdata.eu/open/index.php?title=Diagnostic_Coordinator_Wiki"
},
{
"name": "Spectroscopy Group",
"url": "https://wiki.jetdata.eu/open/index.php?title=Spectroscopy_Group:index"
},
{
"name": "KS5",
"url": "https://wiki.jetdata.eu/open/index.php?title=CXS:Topic3"
},
{
"name": "KT3",
"url": "https://wiki.jetdata.eu/open/index.php?title=KT3_Journals"
}
]
}
]
},
{
"name": "Work",
"bookmarks": [
{ "name": "Nucleus", "url": "https://nucleus.ukaea.uk/" },
{
"name": "Marval",
"url": "https://marval.service.ukaea.uk/MSMSelfService/Index.aspx"
},
{
"name": "U4BW",
"url": "https://ubw.unit4cloud.com/uk_aea_prod_web/Login/Login.aspx"
},
{ "name": "OPEN-ADAS", "url": "https://open.adas.ac.uk/" },
{
"name": "JET",
"bookmarks": [
{ "name": "Homepage", "url": "http://w3.jet.uk" },
{
"name": "Physics Summary",
"url": "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php"
},
{
"name": "JSPO Reports",
"url": "https://www.jspo.jet.uk/pages/operations/jpecreports_2023.html"
},
{ "name": "DVCM Homepage", "url": "https://dvcm.jetdata.eu/" },
{
"name": "Data",
"bookmarks": [
{
"name": "JET Data Services",
"url": "https://data.jet.uk"
},
{
"name": "PPF Query",
"url": "https://data.jet.uk/ppf/browse/ppfquery"
},
{
"name": "ReqCo",
"url": "https://data.jet.uk/reqco/myrequests"
}
]
},
{
"name": "Mimics",
"bookmarks": [
{
"name": "Countdown",
"url": "http://webmimic.jet.uk/mc/codas/countdown"
},
{
"name": "KS5",
"url": "http://webmimic.jet.uk/DG/codas/ks5.mim.html"
},
{
"name": "KT3",
"url": "http://webmimic.jet.uk/DG/codas/kt3spec.mim.html"
}
]
}
]
},
{
"name": "MAST-U",
"bookmarks": [
{ "name": "Users Page", "url": "https://users.mastu.ukaea.uk/home" },
{
"name": "Diagnostic Handbook",
"url": "https://intranet.ccfe.ac.uk/mastu-handbook"
},
{
"name": "Data Access and Tools",
"url": "https://users.mastu.ukaea.uk/data-access-and-tools"
}
]
},
{
"name": "Office",
"bookmarks": [
{
"name": "Outlook Calendar",
"url": "https://outlook.office.com/calendar/view/workweek"
},
{
"name": "Teams",
"url": "https://teams.microsoft.com/v2"
},
{
"name": "OneDrive",
"url": "https://ukaeauk-my.sharepoint.com/personal/evie_litherland-smith_ukaea_uk/"
},
{ "name": "Sharepoint", "url": "https://ukaeauk.sharepoint.com/" }
]
}
]
},
{
"name": "Miscellaneous",
"bookmarks": [
{ "name": "NHS App", "url": "https://www.nhsapp.service.nhs.uk/login" }
]
}
]

View file

@ -0,0 +1,27 @@
lib: let
withTag = {
bookmarks,
tags,
}: (
map (x:
if (builtins.hasAttr "bookmarks" x)
then {
inherit (x) name;
toolbar = false;
bookmarks = withTag {
inherit (x) bookmarks;
tags = [(builtins.toString x.name)] ++ tags;
};
}
else {
inherit (x) name url;
tags = (x.tags or []) ++ tags;
})
bookmarks
);
in (
withTag {
bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json);
tags = [];
}
)

View file

@ -1,4 +1,8 @@
{pkgs, ...}: {
{
lib,
pkgs,
...
}: {
programs = {
browserpass = {
enable = true;
@ -24,7 +28,7 @@
DisableSetDesktopBackground = true;
DisableSystemAddonUpdate = true;
DisableTelemetry = true;
DisplayBookmarksToolbar = "never";
DisplayBookmarksToolbar = "newtab";
DisplayMenuBar = "default-off";
DontCheckDefaultBrowser = true;
EnableTrackingProtection = {
@ -50,6 +54,10 @@
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;
@ -90,7 +98,6 @@
StartDownloadsInTempDirectory = true;
};
profiles.default = {
bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json);
settings = {
"app.shield.optoutstudies.enabled" = false;
"browser.bookmarks.addedImportButton" = false;
@ -102,7 +109,7 @@
"browser.warnOnQuitShortcut" = false;
"distribution.searchplugins.defaultLocale" = "en-GB";
"doh-rollout.home-region" = "GB";
"extensions.activeThemeID" = "default-theme@mozilla.org";
"extensions.activeThemeID" = "{c6698fd1-fe9b-4eae-95d5-fe1703820469}";
"extensions.formautofill.creditCards.enabled" = false;
"general.useragent.locale" = "en-GB";
"intl.accept_languages" = "en-gb,en";
@ -115,7 +122,7 @@
"browser.newtabpage.pinned" = [
{
title = "NixOS Wiki";
url = "https://wiki.nixos.org";
url = "https://nixos.wiki";
}
{
title = "Arch Wiki";
@ -123,6 +130,13 @@
}
];
};
bookmarks = [
{
name = "toplevel";
toolbar = true;
bookmarks = import ./bookmarks/default.nix lib;
}
];
search = rec {
default = "DuckDuckGo";
privateDefault = default;

View file

@ -1,7 +1,11 @@
{pkgs, ...}: {
{
config,
lib,
pkgs,
...
}: {
home.packages = with pkgs; [
wineWowPackages.waylandFull
cartridges
lutris
prismlauncher
(retroarch.override {

View file

@ -0,0 +1,6 @@
{
config,
lib,
pkgs,
...
}: {}

View file

@ -0,0 +1,122 @@
(
;; 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

@ -2,9 +2,7 @@
((default-modes
(pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))
(default-modes
(pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))
(default-modes
(pushnew 'nyxt/mode/no-script:no-script-mode %slot-value%))))
(pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))))
(define-configuration status-buffer
((glyph-mode-presentation-p t)
@ -12,12 +10,10 @@
(define-configuration :emacs-mode ((glyph "ε")))
(define-configuration :force-https-mode ((glyph "ϕ")))
(define-configuration :no-script-mode ((glyph "j")))
(define-configuration :user-script-mode ((glyph "u")))
(define-configuration :blocker-mode ((glyph "β")))
(define-configuration :proxy-mode ((glyph "π")))
(define-configuration :reduce-tracking-mode ((glyph "τ")))
(define-configuration :reduce-bandwidth-mode ((glyph "r")))
(define-configuration :certificate-exception-mode ((glyph "χ")))
(define-configuration :style-mode ((glyph "ϕ")))
(define-configuration :cruise-control-mode ((glyph "σ")))
@ -54,7 +50,7 @@
'("flathub" "https://flathub.org/apps/search?q=~a" "https://flathub.org/")
'("doi" "https://dx.doi.org/~a" "https://dx.doi.org/")
'("wiki" "https://en.wikipedia.org/w/index.php?search=~a" "https://en.wikipedia.org/")
'("ddg" "https://html.duckduckgo.com/html/?q=~a" "https://html.duckduckgo.com/"))
'("ddg" "https://duckduckgo.com/?q=~a" "https://duckduckgo.com/"))
"List of search engines.")
(define-configuration context-buffer
@ -66,4 +62,4 @@
(define-configuration browser
((restore-session-on-startup-p nil)))
(setf (uiop/os:getenv "GTK_THEME") "Adwaita:light")
(setf (uiop/os:getenv "GTK_THEME") "Adwaita:dark")

42
programs/nyxt/default.nix Normal file
View file

@ -0,0 +1,42 @@
{
config,
pkgs,
fonts,
accentColour ? "base07",
...
}: {
home.packages = [pkgs.nyxt];
xdg = {
configFile = {
"nyxt/config.lisp".text = with config.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 "${config.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,10 +1,5 @@
{pkgs, ...}: {
home.packages = with pkgs;
with kdePackages; [
helvum
kdenlive
krita
];
home.packages = with pkgs; [helvum];
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [

View file

@ -8,6 +8,8 @@
(python3.withPackages
(ps:
with ps; [
python-lsp-server
mypy
numpy
scipy
xarray

View file

@ -5,7 +5,6 @@ select = [
"B", # Flake8 bugbear rules
"PD", # Pandas vet rules
"NPY", # NumPy specific rules
"NPY201", # NumPy 2.0 deprecation warnings
"RUF", # Ruff specific rules
"PERF1", "PERF2", # Performance lints from Perflint
"E101", # Mixed spaces and tabs

View file

@ -1,45 +1,35 @@
{
config,
accentColourName,
accentColour ? "base07",
...
}: {
programs.bottom = {
enable = true;
settings = {
flags = {
group_processes = true;
temperature_type = "celsius";
battery = true;
enable_gpu = true;
enable_cache_memory = true;
};
colors = let
sc = config.scheme.withHashtag;
rainbow = with sc; [red yellow green cyan blue magenta];
settings.colors = with config.scheme.withHashtag; let
rainbow = [red yellow green cyan blue magenta];
in {
table_header_color = sc.base05;
all_cpu_color = sc.base05;
avg_cpu_color = sc.base05;
table_header_color = base05;
all_cpu_color = base05;
avg_cpu_color = base05;
cpu_core_colors = rainbow;
ram_color = sc.red;
cache_color = sc.green;
swap_color = sc.blue;
rx_color = sc.green;
tx_color = sc.blue;
widget_title_color = sc.${accentColourName};
border_color = sc.base02;
highlighted_border_color = sc.${accentColourName};
text_color = sc.base05;
graph_color = sc.base04;
cursor_color = sc.base02;
selected_text_color = sc.base05;
selected_bg_color = sc.base01;
high_battery_color = sc.green;
medium_battery_color = sc.yellow;
low_battery_color = sc.red;
ram_color = red;
cache_color = green;
swap_color = blue;
rx_color = green;
tx_color = blue;
widget_title_color = config.scheme.withHashtag.${accentColour};
border_color = base02;
highlighted_border_color = config.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 = sc.cyan;
};
arc_color = cyan;
};
};
}

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,28 +1,35 @@
{pkgs, ...}: {
{
lib,
pkgs,
...
}: {
imports = [
./bottom.nix
./fastfetch.nix
./git.nix
./ssh.nix
./starship.nix
./zsh.nix
];
home.packages = with pkgs; [
rclone
git-sync
du-dust
./bottom.nix
./zellij.nix
];
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 = {
bash.enable = true;
bat = {
enable = true;
config = {
theme = "OneHalfLight";
style = "plain,numbers,changes";
};
config.theme = "catppuccinMocha";
};
eza = {
enable = true;
enableAliases = true;
git = true;
icons = true;
extraOptions = ["--octal-permissions"];
@ -31,14 +38,44 @@
enable = true;
nix-direnv.enable = true;
};
fd.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";
};
jq.enable = true;
ripgrep.enable = true;
zsh = {
enable = true;
enableCompletion = true;
enableAutosuggestions = true;
enableVteIntegration = true;
autocd = true;
defaultKeymap = "emacs";
syntaxHighlighting = {
enable = true;
highlighters = ["brackets" "cursor"];
};
historySubstringSearch.enable = true;
history = {
extended = true;
share = true;
ignoreDups = true;
ignoreAllDups = true;
ignoreSpace = true;
expireDuplicatesFirst = true;
};
shellAliases = {
nixos-switch = "sudo nixos-rebuild switch --flake flake:my-nixos --show-trace";
home-manager-switch = "nix run flake:my-home-manager -- switch --flake flake:my-home-manager --show-trace";
};
initExtra = ''
## completion config and styling
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' menu 'select=long-list'
## transient prompt
source ${./transient.zsh}
'';
};
};
}

View file

@ -1,6 +0,0 @@
{...}: {
programs.fastfetch = {
enable = true;
settings = {};
};
}

View file

@ -5,13 +5,16 @@
];
programs.ssh = {
enable = true;
addKeysToAgent = "yes";
forwardAgent = true;
compression = true;
serverAliveInterval = 15;
serverAliveCountMax = 3;
controlMaster = "auto";
controlPersist = "10s";
extraConfig = ''
AddKeysToAgent=yes
SetEnv TERM=xterm-256color
'';
matchBlocks = {
"git*".user = "git";
"legion" = {
@ -28,11 +31,13 @@
};
"freia" = {
user = "elitherl";
hostname = "freia027.hpc.l";
hostname = "freia020.hpc.l";
forwardX11Trusted = true;
};
"heimdall" = {
user = "elitherl";
hostname = "heimdall003.jet.uk";
forwardX11Trusted = true;
};
};
};

View file

@ -4,6 +4,7 @@
enableTransience = true;
settings = {
add_newline = false;
c = {symbol = " ";};
character = {
success_symbol = "[󰁔 ](bold green)";
error_symbol = "[󰁔 ](bold red)";
@ -17,6 +18,7 @@
};
direnv = {disabled = false;};
git_branch = {
symbol = " ";
only_attached = true;
ignore_branches = ["master" "main"];
};
@ -47,12 +49,46 @@
jobs = {symbol = "󰈏 ";};
line_break = {disabled = false;};
localip = {disabled = false;};
lua = {symbol = " ";};
memory_usage = {disabled = false;};
nodejs = {symbol = " ";};
os = {
disabled = false;
format = "on [$symbol]($style) ";
symbols = {
Alpine = " ";
Arch = " ";
Artix = " ";
CentOS = " ";
Debian = " ";
EndeavourOS = " ";
Fedora = " ";
FreeBSD = " ";
Gentoo = " ";
Illumos = " ";
Linux = " ";
Macos = " ";
Manjaro = " ";
Mint = " ";
NixOS = " ";
OpenBSD = " ";
openSUSE = " ";
Pop = " ";
Raspbian = " ";
Redhat = " ";
RedHatEnterprise = " ";
Solus = " ";
SUSE = " ";
Ubuntu = " ";
Unknown = " ";
Windows = " ";
};
};
package = {symbol = " ";};
python = {
python_binary = "python3";
symbol = " ";
};
python.python_binary = "python3";
shell = {
disabled = false;
format = "using [$indicator ]($style)";
@ -69,89 +105,6 @@
signal_symbol = " ";
};
sudo = {disabled = false;};
# Nerd Font symbol config
# from `starship preset nerd-font-symbols`
aws.symbol = " ";
buf.symbol = " ";
c.symbol = " ";
conda.symbol = " ";
crystal.symbol = " ";
dart.symbol = " ";
directory.read_only = " 󰌾";
docker_context.symbol = " ";
elixir.symbol = " ";
elm.symbol = " ";
fennel.symbol = " ";
fossil_branch.symbol = " ";
git_branch.symbol = " ";
golang.symbol = " ";
guix_shell.symbol = " ";
haskell.symbol = " ";
haxe.symbol = " ";
hg_branch.symbol = " ";
# hostname.ssh_symbol = " ";
java.symbol = " ";
julia.symbol = " ";
kotlin.symbol = " ";
lua.symbol = " ";
memory_usage.symbol = "󰍛 ";
meson.symbol = "󰔷 ";
nim.symbol = "󰆥 ";
nix_shell.symbol = " ";
nodejs.symbol = " ";
ocaml.symbol = " ";
os.symbols = {
Alpaquita = " ";
Alpine = " ";
Amazon = " ";
Android = " ";
Arch = " ";
Artix = " ";
CentOS = " ";
Debian = " ";
DragonFly = " ";
Emscripten = " ";
EndeavourOS = " ";
Fedora = " ";
FreeBSD = " ";
Garuda = "󰛓 ";
Gentoo = " ";
HardenedBSD = "󰞌 ";
Illumos = "󰈸 ";
Linux = " ";
Mabox = " ";
Macos = " ";
Manjaro = " ";
Mariner = " ";
MidnightBSD = " ";
Mint = " ";
NetBSD = " ";
NixOS = " ";
OpenBSD = "󰈺 ";
openSUSE = " ";
OracleLinux = "󰌷 ";
Pop = " ";
Raspbian = " ";
Redhat = " ";
RedHatEnterprise = " ";
Redox = "󰀘 ";
Solus = "󰠳 ";
SUSE = " ";
Ubuntu = " ";
Unknown = " ";
Windows = "󰍲 ";
};
package.symbol = "󰏗 ";
perl.symbol = " ";
php.symbol = " ";
pijul_channel.symbol = " ";
python.symbol = " ";
rlang.symbol = "󰟔 ";
ruby.symbol = " ";
rust.symbol = " ";
scala.symbol = " ";
swift.symbol = " ";
zig.symbol = " ";
};
};
}

View file

@ -1,30 +0,0 @@
{...}: {
programs.zsh = {
enable = true;
enableCompletion = true;
autocd = true;
autosuggestion.enable = true;
defaultKeymap = "emacs";
syntaxHighlighting = {
enable = true;
highlighters = ["brackets" "cursor"];
};
historySubstringSearch.enable = true;
history = {
extended = true;
share = true;
ignoreDups = true;
ignoreAllDups = true;
ignoreSpace = true;
expireDuplicatesFirst = true;
};
initExtra = ''
## completion config and styling
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' menu 'select=long-list'
## transient prompt
source ${./transient.zsh}
'';
};
}

View file

@ -0,0 +1,75 @@
[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

@ -0,0 +1,30 @@
{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.9;
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

@ -0,0 +1,22 @@
{
config,
accentColour ? "base07",
...
}: {
services.avizo = {
enable = true;
settings.default = with config.scheme; let
accent = {
r = config.scheme."${accentColour}-rgb-r";
g = config.scheme."${accentColour}-rgb-g";
b = config.scheme."${accentColour}-rgb-b";
};
in {
background = "rgba(${base00-rgb-r}, ${base00-rgb-g}, ${base00-rgb-b}, 0.9)";
bar-bg-color = "rgba(${base00-rgb-r}, ${base00-rgb-g}, ${base00-rgb-b}, 0.9)";
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";
};
};
}

View file

@ -3,11 +3,33 @@
lib,
pkgs,
fonts,
accentColourName,
accentColour ? "base07",
...
}: {
programs.waybar.systemd.target = lib.mkIf config.wayland.windowManager.sway.systemd.enable "sway-session.target";
services.kanshi.systemdTarget = lib.mkIf config.wayland.windowManager.sway.systemd.enable "sway-session.target";
imports = [
./alacritty/default.nix
./avizo/default.nix
./fuzzel/default.nix
./swaylock/default.nix
./swayidle/default.nix
./swaync/default.nix
./waybar/default.nix
./wlogout/default.nix
];
home.packages = with pkgs; [
swaybg
(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 =
@ -16,7 +38,6 @@
swaynag.enable = true;
systemd.enable = true;
xwayland = true;
checkConfig = false;
config = {
input = {
"*" = {
@ -47,76 +68,63 @@
style = "regular";
size = fonts.sizes.desktop * 1.0;
};
colors = let
sc = config.scheme.withHashtag;
text = toString sc.base05;
indicator = toString sc.${accentColourName};
background = toString sc.base00;
in {
inherit background;
focused = let
border = toString sc.${accentColourName};
in {
inherit background text indicator border;
colors = with config.scheme.withHashtag; let
text = toString base05;
indicator = toString cyan;
in rec {
background = toString base00;
focused = rec {
inherit background text indicator;
border = toString config.scheme.withHashtag.${accentColour};
childBorder = border;
};
focusedInactive = let
border = toString sc.base04;
in {
inherit background text indicator border;
focusedInactive = rec {
inherit background text indicator;
border = toString base04;
childBorder = border;
};
unfocused = let
border = toString sc.base03;
in {
inherit background text indicator border;
unfocused = rec {
inherit background text indicator;
border = toString base03;
childBorder = border;
};
urgent = let
border = toString sc.red;
in {
inherit background text indicator border;
urgent = rec {
inherit background text indicator;
border = toString red;
childBorder = border;
};
};
startup = [
{command = "${pkgs.swaynotificationcenter}/bin/swaync";}
{command = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1";}
{command = "${pkgs.protonmail-bridge}/bin/protonmail-bridge -n";}
{command = "set-background";}
{command = "${pkgs.swaybg}/bin/swaybg -m fill -i ${../../wallpapers/default.jpg}";}
];
window = {
border = 1;
titlebar = false;
commands = [
{
criteria.window_role = "(?:pop-up|bubble|dialog)";
commands =
(map (criteria: {
inherit criteria;
command = "floating enable";
}
{
criteria.app_id = "(?:org\.kde\.polkit-kde-authentication-agent-1|Pinentry|pavucontrol|\.blueman-manager-wrapped|nm-connection-editor)";
command = "floating enable";
}
{
criteria.class = "(?:[Mm]atplotlib|.*\.py|Idl)";
command = "floating enable";
}
{
# Catch-all for file dialog windows
criteria.title = "(?:Open|Save) (?:File|Folder|As)";
command = "floating enable, resize set width 1030 height 710";
}
{
# Inhibit idle when watching vidoes
criteria.app_id = "(?:firefox|mpv)";
command = "inhibit_idle fullscreen";
}
{
# Window rules for game sessions.
# Note: controllers don't reset idle timer
criteria.class = "(?:steam_app|Minecraft).*";
command = "floating enable, fullscreen enable, inhibit_idle focus";
}
];
}) [
{app_id = "org.kde.polkit-kde-authentication-agent-1";}
{app_id = "Pinentry";}
{app_id = "pavucontrol";}
{app_id = "\.blueman-manager-wrapped";}
{app_id = "nm-connection-editor";}
{app_id = "thunar";}
{class = "[Mm]atplotlib";}
{class = ".*\.py";}
{class = "Idl";}
])
++ (map (criteria: {
inherit criteria;
command = "layout tabbed";
}) [
{class = "Nxplayer\.bin";}
{app_id = "Nxplayer\.bin";}
])
++ [];
};
floating.border = 1;
keybindings = with config; let
@ -149,10 +157,10 @@
"XF86MonBrightnessDown" = "exec ${services.avizo.package}/bin/lightctl - 5";
# System utilities
"Mod4+Mod1+l" = "exec swaylockfx";
"${modifier}+z" = "exec ${pkgs.mako}/bin/makoctl dismiss -a";
"${modifier}+Shift+z" = "exec ${pkgs.mako}/bin/makoctl restore";
"${modifier}+Shift+p" = "exec ${programs.wlogout.package}/bin/wlogout";
"${modifier}+F1" = "exec swaylockfx";
"${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";
};
};
@ -167,13 +175,13 @@
corner_radius 10
shadows disable
shadow_blur_radius 0
layer_effects "system-menu" blur enable; shadows disable
layer_effects "gtk-layer-shell" blur enable; shadows disable
layer_effects "notifications" blur enable; shadows disable
layer_effects "launcher" blur enable; shadows disable
layer_effects "logout_dialog" blur enable; shadows disable
layer_effects "waybar" blur enable; shadows disable
layer_effects "avizo" blur enable; shadows disable
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 "launcher" blur enable; blur_ignore_transparent enable; shadows disable
layer_effects "waybar" 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

@ -8,19 +8,20 @@
server.enable = true;
settings = {
main = {
term = "xterm-256color";
locked-title = false;
# term = "xterm-256color";
title = "foot";
locked-title = "no";
font = "${fonts.monospace.name}:size=${toString fonts.sizes.applications}";
dpi-aware = false;
dpi-aware = "yes";
pad = "10x10";
};
bell = {
urgent = false;
notify = false;
visual = false;
urgent = "no";
notify = "no";
visual = "no";
};
cursor = {blink = true;};
mouse = {hide-when-typing = true;};
cursor = {blink = "yes";};
mouse = {hide-when-typing = "yes";};
colors = with config.scheme; rec {
alpha = 0.9;
background = base00;
@ -33,14 +34,14 @@
regular5 = magenta;
regular6 = cyan;
regular7 = base05;
bright0 = base04;
bright0 = base03;
bright1 = regular1;
bright2 = regular2;
bright3 = regular3;
bright4 = regular4;
bright5 = regular5;
bright6 = regular6;
bright7 = base05;
bright7 = base04;
};
};
};

View file

@ -1,8 +1,9 @@
{
config,
lib,
pkgs,
fonts,
accentColourName,
accentColour ? "base07",
...
}: {
programs.fuzzel = {
@ -10,32 +11,29 @@
settings = {
main = {
dpi-aware = false;
font = "${fonts.monospace.name}:size=${toString fonts.sizes.popups}";
font = "${fonts.monospace.name}:size=${toString fonts.sizes.applications}";
icon-theme = config.gtk.iconTheme.name;
icons-enabled = true;
fields = "filename,name,generic,categories";
fuzzy = true;
filter-desktop = true;
terminal = with config.programs; "${
if alacritty.enable
then alacritty.package
else pkgs.alacritty
}/bin/alacritty -e";
lines = 24;
lines = 40;
width = 80;
tabs = 4;
layer = "overlay";
};
colors = let
sc = config.scheme;
in {
background = "${sc.base00}cc"; # 80% Opacity
text = "${sc.base05}ff";
match = "${sc.red}ff";
selection = "${sc.base01}ff";
selection-text = "${sc.base05}ff";
selection-match = "${sc.red}ff";
border = "${sc.${accentColourName}}ff";
colors = with config.scheme; {
background = "${base00}5A"; # 90% opacity
text = "${base05}FF";
match = "${red}FF";
selection = "${base01}FF";
selection-text = "${base05}FF";
selection-match = "${red}FF";
border = "${config.scheme.${accentColour}}FF";
};
border = {
width = 1;

View file

@ -2,7 +2,7 @@
config,
pkgs,
fonts,
accentColourName,
accentColour ? "base07",
...
}: {
programs.rofi = {
@ -36,15 +36,15 @@
display-emoji = " 󰞅 Emoji ";
display-combi = " 󰛡 Combi ";
};
theme = with builtins; let
theme = with builtins;
with config.scheme; let
inherit (config.lib.formats.rasi) mkLiteral;
sc = config.scheme;
bg = mkLiteral "rgba (${sc.base00-rgb-r}, ${sc.base00-rgb-g}, ${sc.base00-rgb-b}, 80%)";
bg2 = mkLiteral "rgba (${sc.base01-rgb-r}, ${sc.base01-rgb-g}, ${sc.base01-rgb-b}, 100%)";
fg = mkLiteral sc.withHashtag.base05;
fg2 = mkLiteral sc.withHashtag.base04;
border = mkLiteral sc.withHashtag.${accentColour};
blue = mkLiteral sc.withHashtag.blue;
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";

View file

@ -0,0 +1,56 @@
{
config,
pkgs,
accentColour ? "base07",
...
}: {
home.packages = with pkgs; [
(callPackage ./swaylockfx.nix
{swaylock-effects = config.programs.swaylock.package;})
];
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
# Settings are specifically for swaylock-effects
settings = with config.scheme; {
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;
# color = base00;
bs-hl-color = base06;
caps-lock-bs-hl-color = base06;
caps-lock-key-hl-color = green;
# inside-color = 00000000;
# inside-clear-color = 00000000;
# inside-caps-lock-color = 00000000;
# inside-ver-color = 00000000;
# inside-wrong-color = 00000000;
key-hl-color = green;
# layout-bg-color = 00000000;
# layout-border-color = 00000000;
layout-text-color = base05;
# line-color = 00000000;
# line-clear-color = 00000000;
# line-caps-lock-color = 00000000;
# line-ver-color = 00000000;
# line-wrong-color = 00000000;
ring-color = config.scheme.${accentColour};
ring-clear-color = base06;
ring-caps-lock-color = base09;
ring-ver-color = blue;
ring-wrong-color = red;
# separator-color = 00000000;
text-color = base05;
text-clear-color = base06;
text-caps-lock-color = base09;
text-ver-color = blue;
text-wrong-color = red;
};
};
}

View file

@ -2,15 +2,11 @@
config,
pkgs,
fonts,
accentColourName,
accentColour ? "base07",
...
}: {
home.packages = [pkgs.swaynotificationcenter];
xdg.configFile."swaync/style.css".text = let
sc = config.scheme.withHashtag;
alpha = "0.8";
alpha-background = "rgba(${config.scheme.base00-rgb-r}, ${config.scheme.base00-rgb-g}, ${config.scheme.base00-rgb-b}, ${alpha})";
in ''
xdg.configFile."swaync/style.css".text = with config.scheme; ''
* {
all: unset;
font-size: 1.2rem;
@ -21,10 +17,10 @@
.floating-notifications.background .notification-row .notification-background {
border-radius: 10px;
border: 1px solid ${sc.withHashtag.${accentColourName}};
border: 1px solid ${withHashtag.${accentColour}};
margin: 18px;
background-color: ${alpha-background};
color: ${sc.base05};
background-color: rgba(${base00-rgb-r}, ${base00-rgb-g}, ${base00-rgb-b}, 0.9);
color: ${withHashtag.base05};
padding: 0;
}
@ -50,7 +46,7 @@
.notification
.notification-content
.summary {
color: ${sc.base05};
color: ${withHashtag.base05};
}
.floating-notifications.background
@ -59,7 +55,7 @@
.notification
.notification-content
.time {
color: ${sc.base04};
color: ${withHashtag.base04};
}
.floating-notifications.background
@ -68,7 +64,7 @@
.notification
.notification-content
.body {
color: ${sc.base05};
color: ${withHashtag.base05};
}
.floating-notifications.background
@ -88,8 +84,8 @@
> *
.notification-action {
border-radius: 10px;
background-color: ${sc.base01};
color: ${sc.base05};
background-color: ${withHashtag.base01};
color: ${withHashtag.base05};
margin: 7px;
}
@ -100,8 +96,8 @@
> *:last-child
> *
.notification-action:hover {
background-color: ${sc.base01};
color: ${sc.base05};
background-color: ${withHashtag.base01};
color: ${withHashtag.base05};
}
.floating-notifications.background
@ -111,8 +107,8 @@
> *:last-child
> *
.notification-action:active {
background-color: ${sc.blue};
color: ${sc.base00};
background-color: ${withHashtag.blue};
color: ${withHashtag.base00};
}
.floating-notifications.background
@ -122,61 +118,61 @@
margin: 7px;
padding: 2px;
border-radius: 10px;
background-color: ${sc.red};
color: ${sc.base00};
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.floating-notifications.background
.notification-row
.notification-background
.close-button:hover {
background-color: ${sc.red};
color: ${sc.base00};
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.floating-notifications.background
.notification-row
.notification-background
.close-button:active {
background-color: ${sc.red};
color: ${sc.base00};
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.control-center {
border-radius: 10px;
border: 1px solid ${sc.${accentColourName}};
border: 1px solid ${withHashtag.${accentColour}};
margin: 18px;
background-color: ${alpha-background};
color: ${sc.base05};
background-color: rgba(${base00-rgb-r}, ${base00-rgb-g}, ${base00-rgb-b}, 0.9);
color: ${withHashtag.base05};
padding: 14px;
}
.control-center .widget-title {
color: ${sc.base05};
color: ${withHashtag.base05};
font-size: 1.3em;
}
.control-center .widget-title button {
border-radius: 7px;
background-color: ${sc.base01};
color: ${sc.base05};
background-color: ${withHashtag.base01};
color: ${withHashtag.base05};
padding: 8px;
}
.control-center .widget-title button:hover {
background-color: ${sc.base02};
color: ${sc.base05};
background-color: ${withHashtag.base02};
color: ${withHashtag.base05};
}
.control-center .widget-title button:active {
background-color: ${sc.base03};
color: ${sc.base05};
background-color: ${withHashtag.base03};
color: ${withHashtag.base05};
}
.control-center .notification-row .notification-background {
border-radius: 10px;
background-color: ${sc.base01};
color: ${sc.base05};
background-color: ${withHashtag.base01};
color: ${withHashtag.base05};
margin-top: 14px;
}
@ -199,7 +195,7 @@
.notification
.notification-content
.summary {
color: ${sc.base05};
color: ${withHashtag.base05};
}
.control-center
@ -208,7 +204,7 @@
.notification
.notification-content
.time {
color: ${sc.base04};
color: ${withHashtag.base04};
}
.control-center
@ -217,7 +213,7 @@
.notification
.notification-content
.body {
color: ${sc.base05};
color: ${withHashtag.base05};
}
.control-center
@ -237,8 +233,8 @@
> *
.notification-action {
border-radius: 7px;
background-color: ${sc.base00};
color: ${sc.base05};
background-color: ${withHashtag.base00};
color: ${withHashtag.base05};
margin: 7px;
}
@ -249,8 +245,8 @@
> *:last-child
> *
.notification-action:hover {
background-color: ${sc.base01};;
color: ${sc.base05};
background-color: ${withHashtag.base01};;
color: ${withHashtag.base05};
}
.control-center
@ -260,39 +256,39 @@
> *:last-child
> *
.notification-action:active {
background-color: ${sc.blue};
color: ${sc.base05};
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: ${sc.red};
color: ${sc.base00};
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.control-center .notification-row .notification-background .close-button:hover {
background-color: ${sc.red};
color: ${sc.base00};
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.control-center
.notification-row
.notification-background
.close-button:active {
background-color: ${sc.red};
color: ${sc.base00};
background-color: ${withHashtag.red};
color: ${withHashtag.base00};
}
.control-center .notification-row .notification-background:hover {
background-color: ${sc.base00};
color: ${sc.base05};
background-color: ${withHashtag.base00};
color: ${withHashtag.base05};
}
.control-center .notification-row .notification-background:active {
background-color: ${sc.blue};
color: ${sc.base05};
background-color: ${withHashtag.blue};
color: ${withHashtag.base05};
}
progressbar,
@ -302,35 +298,35 @@
}
.notification.critical progress {
background-color: ${sc.red};
background-color: ${withHashtag.red};
}
.notification.low progress,
.notification.normal progress {
background-color: ${sc.blue};
background-color: ${withHashtag.blue};
}
trough {
background-color: ${sc.base00};
background-color: ${withHashtag.base00};
}
.control-center trough {
background-color: ${sc.base03};
background-color: ${withHashtag.base03};
}
.control-center-dnd {
margin-top: 5px;
border-radius: 8px;
background: ${sc.base00};
border: 1px solid ${sc.base03};
background: ${withHashtag.base00};
border: 1px solid ${withHashtag.base03};
}
.control-center-dnd:checked {
background: ${sc.base00};
background: ${withHashtag.base00};
}
.control-center-dnd slider {
background: ${sc.base03};
background: ${withHashtag.base03};
border-radius: 8px;
}
@ -342,18 +338,18 @@
.widget-dnd > switch {
font-size: initial;
border-radius: 8px;
background: ${sc.base00};
border: 1px solid ${sc.base03};
background: ${withHashtag.base00};
border: 1px solid ${withHashtag.base03};
}
.widget-dnd > switch:checked {
background: ${sc.base00};
background: ${withHashtag.base00};
}
.widget-dnd > switch slider {
background: ${sc.base01};
background: ${withHashtag.base01};
border-radius: 8px;
border: 1px solid ${sc.${accentColourName}};
border: 1px solid ${withHashtag.${accentColour}};
}
'';

View file

@ -0,0 +1,355 @@
{
config,
lib,
pkgs,
hostname,
fonts,
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 config.scheme.withHashtag; let
accent = config.scheme.withHashtag.${accentColour};
in ''
* {
all: unset;
font-size: 1em;
font-family: ${fonts.monospace.name};
}
window {
background: transparent;
box-shadow: none;
}
window > box {
color: ${base05};
background: alpha(${base00}, 0.9);
margin: 5px 5px 0px;
padding: 0px;
border: 1px solid ${accent};
border-radius: 10px;
}
tooltip {
background: ${base00};
border: 1px solid ${accent};
border-radius: 10px;
box-shadow: none;
}
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,6 +1,7 @@
{
config,
fonts,
accentColour ? "base07",
...
}: {
programs.wlogout = {
@ -25,8 +26,8 @@
keybind = "l";
}
];
style = let
sc = config.scheme.withHashtag;
style = with config.scheme.withHashtag; let
accent = config.scheme.withHashtag.${accentColour};
shutdownIcon = ./icons/shutdown.png;
rebootIcon = ./icons/reboot.png;
logoutIcon = ./icons/logout.png;
@ -42,23 +43,24 @@
}
button {
background-color: ${sc.base00};
border: ${accent};
background-color: ${base00};
background-repeat: no-repeat;
background-position: center;
background-size: 25%;
box-shadow: none;
margin: 5px;
color: ${sc.base05};
color: ${base05};
}
button:hover {
background-color: ${sc.base01};
color: ${sc.base05};
background-color: ${base01};
color: ${base05};
}
button:focus {
background-color: ${sc.base02};
color: ${sc.base05};
background-color: ${base03};
color: ${base05};
}
#shutdown {

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View file

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -1,7 +1,5 @@
{pkgs, ...}: {
home.packages = [
(pkgs.writeShellScriptBin "system-update-all"
(builtins.readFile ./shell/system-update-all.sh))
(pkgs.writeShellScriptBin "git-sync-all"
(builtins.readFile ./shell/git-sync-all.sh))
(pkgs.writeShellScriptBin "rsync-local-config"

View file

@ -1,40 +1,25 @@
# Clone ~/.emacs.d/ and ~/.config/home-manager if then don't exist,
# pull otherwise (ff only)
PULL_DIRS=(
"$HOME/.emacs.d/"
"${XDG_CONFIG_HOME:-$HOME/.config}/home-manager"
)
PULL_URLS=(
"https://git.xenia.me.uk/pixelifytica/emacs.git"
"https://git.xenia.me.uk/pixelifytica/home-manager.git"
)
for i in "${!PULL_DIRS[@]}"; do
DIRECTORY="${PULL_DIRS[$i]}"
URL="${PULL_URLS[$i]}"
echo "--- $DIRECTORY ---"
if [ ! -d "$DIRECTORY" ]; then
# Clone ~/.emacs.d/ if it doesn't exist, pull otherwise (ff only)
DIRECTORY="$HOME/.emacs.d/"
URL="https://git.xenia.me.uk/pixelifytica/emacs.git"
echo "--- ~/.emacs.d/ ---"
if [ ! -d "$DIRECTORY" ]; then
git clone "$URL" "$DIRECTORY"
fi
(
fi
(
cd "$DIRECTORY" || exit
git remote set-url origin "$URL"
git pull --ff --ff-only
git status --porcelain
)
done
)
# Sync common directories, setting url to ensure it's up-to-date first
SYNC_DIRS=(
"$HOME/.password-store/"
"$HOME/Documents/org/"
"$HOME/Documents/library/"
"$HOME/Documents/notebooks/"
)
SYNC_URLS=(
"https://git.xenia.me.uk/pixelifytica/pass.git"
"https://git.xenia.me.uk/pixelifytica/org.git"
"https://git.xenia.me.uk/pixelifytica/library.git"
"git@git.ccfe.ac.uk:elitherl/notebooks.git"
)
for i in "${!SYNC_DIRS[@]}"; do
@ -47,9 +32,6 @@ for i in "${!SYNC_DIRS[@]}"; do
(
cd "$DIRECTORY" || exit
git remote set-url origin "$URL"
if [ "$(git branch --show-current)" = "main" ]; then
git branch --set-upstream-to=origin/main main
fi
git pull --ff --ff-only
git submodule update --remote --recursive
git-sync -ns

View file

@ -1,14 +0,0 @@
NIXOS_CONFIGURATION="/etc/nixos"
HOME_MANAGER_CONFIGURATION="$HOME/.config/home-manager"
(
cd "$NIXOS_CONFIGURATION" || exit 1
git pull --ff --ff-only || exit 1
sudo nixos-rebuild switch
)
(
cd "$HOME_MANAGER_CONFIGURATION" || exit 1
git pull --ff --ff-only || exit 1
home-manager switch
)

View file

@ -3,7 +3,6 @@
hostname,
...
}: {
home.packages = with pkgs; [protonmail-bridge-gui];
accounts.email = {
maildirBasePath = "Mail";
accounts = let

View file

@ -5,14 +5,6 @@
...
}: {
imports = [./default.nix];
home.packages = with pkgs; [
(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
'')
];
accounts.email.accounts.outlook = let
host = "127.0.0.1";
tls.enable = false;

View file

@ -28,7 +28,7 @@
maxCacheTtl = 86400;
defaultCacheTtl = maxCacheTtl;
defaultCacheTtlSsh = maxCacheTtl;
pinentryPackage = lib.mkDefault pkgs.pinentry-all;
pinentryFlavor = lib.mkDefault "curses";
extraConfig = ''
no-allow-external-cache
'';

View file

Before

Width:  |  Height:  |  Size: 562 KiB

After

Width:  |  Height:  |  Size: 562 KiB

View file

Before

Width:  |  Height:  |  Size: 642 KiB

After

Width:  |  Height:  |  Size: 642 KiB

View file

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View file

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View file

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

View file

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View file

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View file

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 202 KiB

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View file

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View file

Before

Width:  |  Height:  |  Size: 125 KiB

After

Width:  |  Height:  |  Size: 125 KiB

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

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