Compare commits
132 commits
|
@ -1,5 +0,0 @@
|
|||
repos:
|
||||
- repo: https://github.com/gitleaks/gitleaks
|
||||
rev: v8.18.4
|
||||
hooks:
|
||||
- id: gitleaks
|
8
Makefile
8
Makefile
|
@ -7,10 +7,12 @@ default: build
|
|||
build:
|
||||
nix build --no-link --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
||||
|
||||
server:
|
||||
fonts:
|
||||
nix build --no-link --max-jobs 1 .#iosevka-custom-aile .#iosevka-custom-etoile .#iosevka-custom-nerdfont
|
||||
|
||||
server: fonts
|
||||
nixos-rebuild build --flake .#Legion
|
||||
nix copy ./result --to ssh://legion
|
||||
rm ./result
|
||||
nix copy ./result --to ssh://legion && rm ./result
|
||||
|
||||
flathub:
|
||||
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
|
|
78
flake.lock
78
flake.lock
|
@ -119,6 +119,59 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"stylix",
|
||||
"flake-compat"
|
||||
],
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"stylix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": [
|
||||
"stylix",
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731363552,
|
||||
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"stylix",
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gnome-shell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
@ -159,11 +212,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1735141468,
|
||||
"narHash": "sha256-VIAjBr1qGcEbmhLwQJD6TABppPMggzOvqFsqkDoMsAY=",
|
||||
"lastModified": 1736061677,
|
||||
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4005c3ff7505313cbc21081776ad0ce5dfd7a3ce",
|
||||
"rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -175,11 +228,11 @@
|
|||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1733097829,
|
||||
"narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
|
||||
"lastModified": 1735554305,
|
||||
"narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
|
||||
"rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -205,6 +258,7 @@
|
|||
"base16-vim": "base16-vim",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"git-hooks": "git-hooks",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
|
@ -218,11 +272,11 @@
|
|||
"tinted-tmux": "tinted-tmux"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1734110444,
|
||||
"narHash": "sha256-fp1iV2JldCSvz+7ODzXYUkQ+H7zyiWw5E0MQ4ILC4vw=",
|
||||
"lastModified": 1736019457,
|
||||
"narHash": "sha256-MWe3RXEV9dov1wFZraWagVAxynPo/VceStIYfNRgqG4=",
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"rev": "9015d5d0d5d100f849129c43d257b827d300b089",
|
||||
"rev": "5204b085385c0bfaa1eb1bb0f8dc81922012128d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -302,11 +356,11 @@
|
|||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1735135567,
|
||||
"narHash": "sha256-8T3K5amndEavxnludPyfj3Z1IkcFdRpR23q+T0BVeZE=",
|
||||
"lastModified": 1736154270,
|
||||
"narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "9e09d30a644c57257715902efbb3adc56c79cf28",
|
||||
"rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
15
flake.nix
15
flake.nix
|
@ -30,9 +30,22 @@
|
|||
...
|
||||
}:
|
||||
let
|
||||
treefmt = treefmt-nix.lib.evalModule nixpkgs.legacyPackages.x86_64-linux ./treefmt.nix;
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
treefmt = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
|
||||
in
|
||||
{
|
||||
packages.x86_64-linux =
|
||||
let
|
||||
fonts = pkgs.callPackage ./system/fonts.nix { };
|
||||
in
|
||||
{
|
||||
inherit (fonts)
|
||||
iosevka-custom
|
||||
iosevka-custom-aile
|
||||
iosevka-custom-etoile
|
||||
iosevka-custom-nerdfont
|
||||
;
|
||||
};
|
||||
formatter.x86_64-linux = treefmt.config.build.wrapper;
|
||||
checks.x86_64-linux.formatting = treefmt.config.build.check self;
|
||||
nixosConfigurations = {
|
||||
|
|
|
@ -9,9 +9,10 @@
|
|||
./services/nix-serve.nix
|
||||
./services/sshd.nix
|
||||
./services/syncthing.nix
|
||||
./services/webdav.nix
|
||||
./services/xandikos.nix
|
||||
# ./services/minecraft.nix
|
||||
./services/satisfactory/default.nix
|
||||
# ./services/satisfactory/default.nix
|
||||
];
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
|
|
|
@ -5,5 +5,6 @@
|
|||
home.stateVersion = "23.05";
|
||||
wayland.windowManager.hyprland.settings.monitor = [ "eDP-1,preferred,auto,1.25" ];
|
||||
};
|
||||
networking.wg-quick.interfaces.wg0.configFile = "/etc/wireguard/gb-mnc-wg-001.conf";
|
||||
system.stateVersion = "23.05";
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
./desktop.nix
|
||||
./steam.nix
|
||||
];
|
||||
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/onedark.yaml";
|
||||
home-manager.users.${username} = {
|
||||
imports = [ ./home/swww/default.nix ];
|
||||
home = {
|
||||
|
@ -63,9 +62,7 @@
|
|||
workspace = [
|
||||
"2, monitor:desc:${secondary}"
|
||||
"3, monitor:desc:${secondary}"
|
||||
"4, monitor:desc:${primary}"
|
||||
"5, monitor:desc:${primary}"
|
||||
"6, monitor:desc:${primary}"
|
||||
"7, monitor:desc:${primary}"
|
||||
];
|
||||
};
|
||||
|
@ -91,5 +88,6 @@
|
|||
};
|
||||
};
|
||||
services.hardware.openrgb.enable = true;
|
||||
networking.wg-quick.interfaces.wg0.configFile = "/etc/wireguard/gb-mnc-wg-001.conf";
|
||||
system.stateVersion = "23.05";
|
||||
}
|
||||
|
|
|
@ -18,19 +18,12 @@
|
|||
enable = true;
|
||||
package = pkgs.nixVersions.latest;
|
||||
settings = {
|
||||
cores = 0;
|
||||
max-jobs = "auto";
|
||||
trusted-users = [
|
||||
"root"
|
||||
username
|
||||
];
|
||||
trusted-users = [ username ];
|
||||
experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
auto-optimise-store = true;
|
||||
substituters = [ "https://nix.xenia.me.uk" ];
|
||||
trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ];
|
||||
};
|
||||
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||
channel.enable = true;
|
||||
|
@ -39,16 +32,6 @@
|
|||
options = "--delete-older-than 3d";
|
||||
};
|
||||
optimise.automatic = true;
|
||||
registry.my-nixos = {
|
||||
from = {
|
||||
type = "indirect";
|
||||
id = "my-nixos";
|
||||
};
|
||||
to = {
|
||||
type = "git";
|
||||
url = "https://git.xenia.me.uk/pixelifytica/nixos.git?ref=main";
|
||||
};
|
||||
};
|
||||
extraOptions = ''
|
||||
keep-outputs = false
|
||||
keep-derivations = false
|
||||
|
@ -67,7 +50,7 @@
|
|||
"nomachine-client"
|
||||
];
|
||||
system.autoUpgrade = {
|
||||
enable = true;
|
||||
enable = false; # TEMP disable until server is back up
|
||||
persistent = true;
|
||||
allowReboot = false;
|
||||
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
||||
|
@ -110,6 +93,7 @@
|
|||
isNormalUser = true;
|
||||
group = "users";
|
||||
description = "Evie Litherland-Smith";
|
||||
shell = pkgs.zsh;
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
|
@ -134,6 +118,7 @@
|
|||
imports = [
|
||||
./home/shell/default.nix
|
||||
./home/scripts/default.nix
|
||||
./home/gpg/default.nix
|
||||
];
|
||||
home = {
|
||||
inherit username;
|
||||
|
@ -165,12 +150,14 @@
|
|||
dig
|
||||
wireguard-tools
|
||||
librespeed-cli
|
||||
dust
|
||||
quickemu
|
||||
distrobox
|
||||
];
|
||||
localBinInPath = true;
|
||||
};
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
command-not-found.enable = false;
|
||||
ssh.startAgent = true;
|
||||
nano = {
|
||||
|
@ -214,30 +201,43 @@
|
|||
base16Scheme = lib.mkDefault "${pkgs.base16-schemes}/share/themes/one-light.yaml";
|
||||
polarity = config.lib.stylix.scheme.variant;
|
||||
opacity = {
|
||||
applications = 0.9;
|
||||
desktop = 0.7;
|
||||
popups = 0.5;
|
||||
terminal = 0.9;
|
||||
applications = 1.0;
|
||||
terminal = 0.8125; # 0x0.D
|
||||
desktop = 0.75; # 0x0.C
|
||||
popups = 0.6875; # 0x0.B
|
||||
};
|
||||
cursor = {
|
||||
package = pkgs.volantes-cursors;
|
||||
name = "volantes_cursors";
|
||||
size = 32;
|
||||
};
|
||||
fonts = {
|
||||
monospace = {
|
||||
package = pkgs.nerdfonts.override { fonts = [ "DejaVuSansMono" ]; };
|
||||
name = "DejaVuSansM Nerd Font";
|
||||
fonts =
|
||||
let
|
||||
fpkgs = pkgs.callPackage ./fonts.nix { };
|
||||
in
|
||||
{
|
||||
serif = {
|
||||
package = fpkgs.iosevka-custom-etoile;
|
||||
name = "Iosevka Custom Etoile";
|
||||
};
|
||||
sansSerif = {
|
||||
package = fpkgs.iosevka-custom-aile;
|
||||
name = "Iosevka Custom Aile";
|
||||
};
|
||||
monospace = {
|
||||
package = fpkgs.iosevka-custom-nerdfont;
|
||||
name = "IosevkaCustom Nerd Font Propo";
|
||||
};
|
||||
sizes = {
|
||||
applications = 12;
|
||||
desktop = 14;
|
||||
popups = 16;
|
||||
terminal = 12;
|
||||
};
|
||||
};
|
||||
sizes = {
|
||||
applications = 10;
|
||||
desktop = 12;
|
||||
popups = 14;
|
||||
terminal = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
fonts.packages = with pkgs; [
|
||||
dejavu_fonts # Compatibility
|
||||
liberation_ttf # Documents
|
||||
lmodern # LaTeX
|
||||
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
||||
|
|
|
@ -23,7 +23,10 @@
|
|||
systemPackages = with pkgs; [
|
||||
libsecret
|
||||
libnotify
|
||||
libarchive
|
||||
xdg-utils
|
||||
imagemagick
|
||||
ffmpeg
|
||||
hunspell
|
||||
hunspellDicts.en_GB-large
|
||||
wl-clipboard
|
||||
|
@ -31,19 +34,14 @@
|
|||
grim
|
||||
slurp
|
||||
swappy
|
||||
nautilus
|
||||
libreoffice
|
||||
evince
|
||||
image-roll
|
||||
imagemagick
|
||||
clapper
|
||||
xfce.ristretto
|
||||
g4music
|
||||
ffmpeg
|
||||
picard
|
||||
zotero
|
||||
evince
|
||||
libreoffice
|
||||
webcord
|
||||
signal-desktop
|
||||
whatsapp-for-linux
|
||||
teams-for-linux
|
||||
nomachine-client
|
||||
];
|
||||
};
|
||||
|
@ -60,24 +58,36 @@
|
|||
};
|
||||
programs = {
|
||||
dconf.enable = true;
|
||||
xfconf.enable = true;
|
||||
noisetorch.enable = true;
|
||||
seahorse.enable = true;
|
||||
file-roller.enable = true;
|
||||
hyprland.enable = true;
|
||||
xwayland.enable = true;
|
||||
thunar = {
|
||||
enable = true;
|
||||
plugins = with pkgs.xfce; [
|
||||
thunar-archive-plugin
|
||||
thunar-volman
|
||||
];
|
||||
};
|
||||
hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
};
|
||||
gtk.iconCache.enable = true;
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "gnome";
|
||||
style = if config.lib.stylix.scheme.variant == "light" then "adwaita" else "adwaita-dark";
|
||||
};
|
||||
services = {
|
||||
xserver.xkb.layout = "gb";
|
||||
gnome.gnome-keyring.enable = true;
|
||||
flatpak.enable = true;
|
||||
printing.enable = true;
|
||||
tumbler.enable = true;
|
||||
udisks2.enable = true;
|
||||
gnome.sushi.enable = true;
|
||||
blueman.enable = config.hardware.bluetooth.enable;
|
||||
gvfs = {
|
||||
enable = true;
|
||||
package = pkgs.gnome.gvfs;
|
||||
|
@ -111,10 +121,6 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
xserver = {
|
||||
enable = true;
|
||||
xkb.layout = "gb";
|
||||
};
|
||||
};
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
|
@ -131,21 +137,21 @@
|
|||
{
|
||||
imports = [
|
||||
./home/hyprland.nix
|
||||
./home/terminal/default.nix
|
||||
./home/terminal.nix
|
||||
./home/browser/firefox.nix
|
||||
./home/browser/nyxt.nix
|
||||
./home/emacs/default.nix
|
||||
./home/email/default.nix
|
||||
./home/calendar/default.nix
|
||||
./home/password-store/default.nix
|
||||
];
|
||||
home.file.${config.gtk.gtk2.configLocation}.force = true;
|
||||
programs.mpv.enable = true;
|
||||
services = {
|
||||
syncthing.enable = true;
|
||||
gammastep = {
|
||||
inherit (osConfig.location) latitude longitude provider;
|
||||
enable = true;
|
||||
tray = true;
|
||||
tray = false;
|
||||
};
|
||||
};
|
||||
gtk = {
|
||||
|
@ -199,44 +205,24 @@
|
|||
early_exit=false
|
||||
fill_shape=false
|
||||
'';
|
||||
# WhatsApp config
|
||||
"whatsapp-for-linux/settings.conf" =
|
||||
# Matplotlib default figure sizes and font settings
|
||||
"matplotlib/matplotlibrc".text =
|
||||
let
|
||||
inherit (config.lib.stylix.scheme) variant;
|
||||
inherit (config.stylix) fonts;
|
||||
in
|
||||
{
|
||||
force = true;
|
||||
text = ''
|
||||
[web]
|
||||
allow-permissions=true
|
||||
hw-accel=2
|
||||
|
||||
[general]
|
||||
notification-sounds=true
|
||||
close-to-tray=true
|
||||
start-in-tray=true
|
||||
|
||||
[appearance]
|
||||
prefer-dark-theme=${if variant == "dark" then "true" else "false"}
|
||||
'';
|
||||
};
|
||||
# Teams config
|
||||
"teams-for-linux/config.json" = {
|
||||
force = true;
|
||||
text = builtins.toJSON {
|
||||
awayOnSystemIdle = true;
|
||||
closeAppOnCross = false;
|
||||
followSystemTheme = true;
|
||||
notificationMethod = "electron";
|
||||
optInTeamsV2 = true;
|
||||
spellCheckerLanguages = [ "en_GB" ];
|
||||
};
|
||||
};
|
||||
''
|
||||
font.family: sans-serif
|
||||
font.serif: ${fonts.serif.name}, DejaVu Serif
|
||||
font.sans-serif: ${fonts.sansSerif.name}, DejaVu Sans
|
||||
font.monospace: ${fonts.monospace.name}, DejaVu Sans Mono
|
||||
figure.figsize: 8, 6
|
||||
figure.dpi: 150
|
||||
figure.autolayout: True
|
||||
savefig.dpi: 300
|
||||
'';
|
||||
# Autostart some programs
|
||||
"autostart/signal-desktop.desktop".source =
|
||||
"${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
||||
"autostart/com.github.eneshecan.WhatsAppForLinux.desktop".source =
|
||||
"${pkgs.whatsapp-for-linux}/share/applications/com.github.eneshecan.WhatsAppForLinux.desktop";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
139
system/fonts.nix
Normal file
139
system/fonts.nix
Normal file
|
@ -0,0 +1,139 @@
|
|||
{
|
||||
stdenv,
|
||||
findutils,
|
||||
iosevka,
|
||||
nerd-font-patcher,
|
||||
}:
|
||||
let
|
||||
custom-build-plan = {
|
||||
noCvSs = false;
|
||||
exportGlyphNames = false;
|
||||
widths.Normal = {
|
||||
shape = 500;
|
||||
menu = 5;
|
||||
css = "normal";
|
||||
};
|
||||
weights = {
|
||||
Regular = {
|
||||
shape = 400;
|
||||
menu = 400;
|
||||
css = 400;
|
||||
};
|
||||
Bold = {
|
||||
shape = 700;
|
||||
menu = 700;
|
||||
css = 700;
|
||||
};
|
||||
};
|
||||
slopes = {
|
||||
Upright = {
|
||||
angle = 0;
|
||||
shape = "upright";
|
||||
menu = "upright";
|
||||
css = "normal";
|
||||
};
|
||||
Italic = {
|
||||
angle = 9.4;
|
||||
shape = "italic";
|
||||
menu = "italic";
|
||||
css = "italic";
|
||||
};
|
||||
};
|
||||
variants.design = {
|
||||
capital-g = "toothless-corner-serifless-hooked";
|
||||
capital-j = "serifed-both-sides";
|
||||
capital-k = "curly-serifless";
|
||||
capital-p = "closed-motion-serifed";
|
||||
capital-q = "crossing";
|
||||
capital-r = "curly-serifless";
|
||||
capital-u = "tailed-serifless";
|
||||
capital-z = "straight-serifless-with-horizontal-crossbar";
|
||||
a = "double-storey-tailed";
|
||||
d = "tailed-serifless";
|
||||
e = "rounded";
|
||||
f = "tailed-crossbar-at-x-height";
|
||||
g = "double-storey-open";
|
||||
h = "tailed-serifless";
|
||||
i = "tailed-serifed";
|
||||
j = "serifed";
|
||||
k = "cursive-serifless";
|
||||
l = "tailed-serifed";
|
||||
m = "tailed-serifless";
|
||||
n = "tailed-serifless";
|
||||
q = "diagonal-tailed-serifless";
|
||||
u = "tailed-serifless";
|
||||
y = "cursive-serifless";
|
||||
z = "straight-serifless-with-horizontal-crossbar";
|
||||
lower-delta = "flat-top";
|
||||
lower-lambda = "tailed-turn";
|
||||
lower-xi = "flat-top";
|
||||
lower-chi = "semi-chancery-straight-serifless";
|
||||
zero = "tall-slashed";
|
||||
one = "no-base";
|
||||
two = "straight-neck-serifless";
|
||||
three = "flat-top-serifless";
|
||||
four = "semi-open-serifless";
|
||||
five = "oblique-arched-serifless";
|
||||
six = "open-contour";
|
||||
seven = "bend-serifless-crossbar";
|
||||
eight = "two-circles";
|
||||
nine = "open-contour";
|
||||
asterisk = "hex-low";
|
||||
underscore = "high";
|
||||
caret = "high";
|
||||
paren = "normal";
|
||||
brace = "straight";
|
||||
number-sign = "slanted";
|
||||
ampersand = "closed";
|
||||
at = "fourfold";
|
||||
percent = "dots";
|
||||
question = "corner";
|
||||
lig-ltgteq = "flat";
|
||||
lig-neq = "more-slanted";
|
||||
lig-equal-chain = "without-notch";
|
||||
lig-hyphen-chain = "without-notch";
|
||||
lig-double-arrow-bar = "without-notch";
|
||||
lig-single-arrow-bar = "without-notch";
|
||||
};
|
||||
};
|
||||
in
|
||||
rec {
|
||||
iosevka-custom = iosevka.override {
|
||||
set = "Custom";
|
||||
privateBuildPlan = custom-build-plan // {
|
||||
family = "Iosevka Custom";
|
||||
spacing = "normal";
|
||||
serifs = "sans";
|
||||
};
|
||||
};
|
||||
iosevka-custom-aile = iosevka.override {
|
||||
set = "CustomAile";
|
||||
privateBuildPlan = custom-build-plan // {
|
||||
family = "Iosevka Custom Aile";
|
||||
spacing = "quasi-proportional";
|
||||
serifs = "sans";
|
||||
};
|
||||
};
|
||||
iosevka-custom-etoile = iosevka.override {
|
||||
set = "CustomEtoile";
|
||||
privateBuildPlan = custom-build-plan // {
|
||||
family = "Iosevka Custom Etoile";
|
||||
spacing = "quasi-proportional";
|
||||
serifs = "slab";
|
||||
};
|
||||
};
|
||||
iosevka-custom-nerdfont = stdenv.mkDerivation {
|
||||
name = "${iosevka-custom.name}-nerd-font-patched";
|
||||
src = iosevka-custom;
|
||||
nativeBuildInputs = [
|
||||
findutils
|
||||
nerd-font-patcher
|
||||
];
|
||||
buildPhase = ''
|
||||
find \( -name \*.ttf -o -name \*.otf \) -execdir nerd-font-patcher --variable-width-glyphs --careful --complete --boxdrawing --no-progressbars {} \;
|
||||
'';
|
||||
installPhase = ''
|
||||
cp -a . $out
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -76,7 +76,7 @@
|
|||
},
|
||||
{
|
||||
"name": "Awesome Wayland",
|
||||
"url": "https://github.com/natpen/awesome-wayland",
|
||||
"url": "https://github.com/rcalixte/awesome-wayland",
|
||||
"tags": ["Software", "Repositories"]
|
||||
},
|
||||
{
|
||||
|
@ -89,6 +89,11 @@
|
|||
"url": "https://github.com/reHackable/awesome-reMarkable",
|
||||
"tags": ["Software", "Repositories"]
|
||||
},
|
||||
{
|
||||
"name": "We Are Wayland Now!",
|
||||
"url": "https://wearewaylandnow.com/",
|
||||
"tags": ["Software"]
|
||||
},
|
||||
{
|
||||
"name": "NixOS Wiki",
|
||||
"url": "https://nixos.wiki",
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
((default-modes
|
||||
(pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))
|
||||
(default-modes
|
||||
(pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))))
|
||||
(pushnew 'nyxt/mode/blocker:blocker-mode %slot-value%))
|
||||
(default-modes
|
||||
(pushnew 'nyxt/mode/reduce-tracking:reduce-tracking-mode %slot-value%))))
|
||||
|
||||
(define-configuration status-buffer
|
||||
((glyph-mode-presentation-p t)
|
||||
|
@ -46,6 +48,7 @@
|
|||
'("crates" "https://crates.io/search?q=~a" "https://crates.io/")
|
||||
'("py" "https://docs.python.org/3/search.html?q=~a" "https://docs.python.org/3")
|
||||
'("pypi" "https://pypi.org/search/?q=~a" "https://pypi.org/")
|
||||
'("nixpkgs" "https://search.nixos.org/packages?type=packages&query=~a" "https://search.nixos.org/packages")
|
||||
'("archwiki" "https://wiki.archlinux.org/index.php?search=~a" "https://wiki.archlinux.org/")
|
||||
'("nixwiki" "https://wiki.nixos.org/w/index.php?search=~a" "https://wiki.nixos.org")
|
||||
'("github" "https://github.com/search?utf8=✓&q=~a&type=repositories" "https://github.com/")
|
||||
|
@ -58,8 +61,7 @@
|
|||
(define-configuration context-buffer
|
||||
"Go through the search engines above and make-search-engine out of them."
|
||||
((search-engines
|
||||
(mapcar (lambda (engine) (apply 'make-search-engine engine))
|
||||
*my-search-engines*))))
|
||||
(mapcar (lambda (engine) (apply 'make-search-engine engine)) *my-search-engines*))))
|
||||
|
||||
(define-configuration browser
|
||||
((restore-session-on-startup-p nil)))
|
||||
((restore-session-on-startup-p t)))
|
||||
|
|
|
@ -18,33 +18,32 @@
|
|||
;; Define custom theme
|
||||
(define-configuration browser
|
||||
((theme (make-instance 'theme:theme
|
||||
:dark-p ${if variant == "light" then "nil" else "t"}
|
||||
:font-family "${fonts.sansSerif.name}"
|
||||
:monospace-font-family "${fonts.monospace.name}"
|
||||
:text-color "${scheme.base05}"
|
||||
:contrast-text-color "${scheme.base01}"
|
||||
:background-color "${scheme.base00}"
|
||||
:primary-color "${scheme.base02}"
|
||||
:primary-color "${scheme.base04}"
|
||||
:secondary-color "${scheme.base03}"
|
||||
:tertiary-color "${scheme.base04}"
|
||||
:quaternary-color "${scheme.base04}"
|
||||
:accent-color "${scheme.base0E}"
|
||||
:tertiary-color "${scheme.base02}"
|
||||
:quaternary-color "${scheme.base02}"
|
||||
:accent-color "${accent}"
|
||||
:action-color "${scheme.cyan}"
|
||||
:success-color "${scheme.green}"
|
||||
:warning-color "${scheme.yellow}"
|
||||
:highlight-color "${scheme.base01}"
|
||||
:highlight-color "${scheme.base04}"
|
||||
:codeblock-color "${scheme.base01}"
|
||||
;; :on-background-color "${scheme.base05}"
|
||||
;; :on-primary-color "${scheme.base05}"
|
||||
;; :on-secondary-color "${scheme.base05}"
|
||||
;; :on-tertiary-color "${scheme.base05}"
|
||||
;; :on-quaternary-color "${scheme.base05}"
|
||||
;; :on-accent-color "${scheme.base01}"
|
||||
;; :on-action-color "${scheme.base01}"
|
||||
;; :on-success-color "${scheme.base01}"
|
||||
;; :on-warning-color "${scheme.base01}"
|
||||
;; :on-highlight-color "${scheme.base01}"
|
||||
;; :on-codeblock-color "${scheme.base05}"
|
||||
:on-background-color "${scheme.base05}"
|
||||
:on-primary-color "${scheme.base00}"
|
||||
:on-secondary-color "${scheme.base01}"
|
||||
:on-tertiary-color "${scheme.base04}"
|
||||
:on-quaternary-color "${scheme.base04}"
|
||||
:on-accent-color "${scheme.base01}"
|
||||
:on-action-color "${scheme.base01}"
|
||||
:on-success-color "${scheme.base01}"
|
||||
:on-warning-color "${scheme.base01}"
|
||||
:on-highlight-color "${scheme.base01}"
|
||||
:on-codeblock-color "${scheme.base05}"
|
||||
))))
|
||||
'';
|
||||
};
|
||||
|
@ -53,8 +52,8 @@
|
|||
# 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
|
||||
# Take bookmarks as returned from JSON file and convert to
|
||||
# NYXT expected format
|
||||
convertBookmark =
|
||||
{
|
||||
name,
|
||||
|
@ -64,10 +63,10 @@
|
|||
"(: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
|
||||
# Fold all entries in bookmarks.json into single string of
|
||||
# NYXT format bookmarks, each entry on a new line and with 2
|
||||
# space indentation, just for visual clarity if reading the
|
||||
# outputted file
|
||||
"(\n"
|
||||
+ (builtins.foldl' (x: y: x + " " + convertBookmark y) "" (
|
||||
builtins.fromJSON (builtins.readFile ./bookmarks.json)
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
@ -12,13 +10,7 @@
|
|||
../texlive/default.nix
|
||||
../programming/default.nix
|
||||
];
|
||||
services.emacs = {
|
||||
enable = lib.mkDefault true;
|
||||
package = config.programs.emacs.finalPackage;
|
||||
defaultEditor = true;
|
||||
client.enable = true;
|
||||
socketActivation.enable = true;
|
||||
};
|
||||
home.sessionVariables.EDITOR = "emacs";
|
||||
programs.emacs = {
|
||||
enable = true;
|
||||
package = pkgs.emacs30.override {
|
||||
|
@ -37,5 +29,7 @@
|
|||
mupdf-headless
|
||||
poppler_utils
|
||||
graphviz-nox
|
||||
|
||||
toolbox
|
||||
];
|
||||
}
|
||||
|
|
|
@ -4,11 +4,12 @@ with epkgs;
|
|||
# EViL Mode
|
||||
evil
|
||||
# UI and Appearance
|
||||
delight
|
||||
nerd-icons
|
||||
nerd-icons-dired
|
||||
nerd-icons-ibuffer
|
||||
nerd-icons-corfu
|
||||
doom-modeline
|
||||
visual-fill-column
|
||||
# Email and Calendar
|
||||
khalel
|
||||
mu4e
|
||||
|
@ -25,7 +26,6 @@ with epkgs;
|
|||
corfu-terminal
|
||||
cape
|
||||
consult
|
||||
consult-eglot
|
||||
tempel
|
||||
tempel-collection
|
||||
rainbow-delimiters
|
||||
|
@ -34,18 +34,15 @@ with epkgs;
|
|||
treesit-auto
|
||||
apheleia
|
||||
flymake-shellcheck
|
||||
flymake-yamllint
|
||||
flymake-clippy
|
||||
flymake-eslint
|
||||
magit
|
||||
forge
|
||||
nix-mode
|
||||
julia-mode
|
||||
julia-ts-mode
|
||||
nix-ts-mode
|
||||
nushell-ts-mode
|
||||
python-docstring
|
||||
python-pytest
|
||||
engrave-faces
|
||||
auctex
|
||||
markdown-mode
|
||||
pandoc-mode
|
||||
scad-mode
|
||||
]
|
||||
|
|
|
@ -248,21 +248,21 @@
|
|||
"pin, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
"dimaround, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
"stayfocused, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||
# Audio control panel
|
||||
"float, pavucontrol"
|
||||
"size 800 600, pavucontrol"
|
||||
"move onscreen 100%-820 50,pavucontrol"
|
||||
# File browser and picker dialog
|
||||
"float, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
||||
"size 800 600, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
||||
"center, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
||||
# PulseAudio, Network and Bluetooth control panels
|
||||
"float, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||
"size 800 600, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||
"move onscreen 50 100%-615,pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||
# File picker dialog
|
||||
"float, xdg-desktop-portal-gtk"
|
||||
"size 800 600, xdg-desktop-portal-gtk"
|
||||
"center, xdg-desktop-portal-gtk"
|
||||
# Matplotlib plots
|
||||
"float, Matplotlib"
|
||||
|
||||
# Workspace rules
|
||||
"workspace 2, (firefox)" # Browser
|
||||
"workspace 3, (signal|whatsapp-for-linux|WebCord|teams-for-linux|twinkle)" # Messaging
|
||||
"workspace 4, (libreoffice|soffice)(.*)" # Documents
|
||||
"workspace 3, (signal|WebCord|teams-for-linux|twinkle)" # Messaging
|
||||
"workspace 4, (Zotero|libreoffice|soffice|org.musicbrainz.Picard)(.*)" # Files
|
||||
"workspace 5, (Nxplayer.bin)" # Remote Desktop
|
||||
"workspace 6, (PrusaSlicer)" # 3D Printing
|
||||
"workspace 7, (steam_app|steam|lutris|page.kramo.Cartridges|org.prismlauncher.PrismLauncher|explorer.exe|gw2-64.exe|rsi launcher.exe)" # Gaming
|
||||
|
@ -281,15 +281,16 @@
|
|||
"center, title:Library,class:firefox"
|
||||
"pin, title:Picture-in-Picture,class:firefox"
|
||||
|
||||
# NautilusPreviewer (Sushi)
|
||||
"float, class:org.gnome.NautilusPreviewer"
|
||||
"center, class:org.gnome.NautilusPreviewer"
|
||||
|
||||
# Electron file picker dialog
|
||||
"float, title:Open Files,class:electron"
|
||||
"size 800 600, title:Open Files,class:electron"
|
||||
"center, title:Open Files,class:electron"
|
||||
|
||||
# Zotero settings window
|
||||
"float, title:(Zotero Settings|Progress),class:Zotero"
|
||||
"size 800 600, title:(Zotero Settings|Progress),class:Zotero"
|
||||
"center, title:(Zotero Settings|Progress),class:Zotero"
|
||||
|
||||
# Inhibit idle when watching videos
|
||||
"idleinhibit fullscreen, class:firefox|com.github.rafostar.Clapper"
|
||||
|
||||
|
@ -327,7 +328,7 @@
|
|||
++ [
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
# Open Hyprland wiki at correct version number
|
||||
"CTRL_SHIFT, H, exec, xdg-open \"https://wiki.hyprland.org/$(${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl version -j | ${pkgs.jq}/bin/jq $args.tag | ${pkgs.gnused}/bin/sed s/v// | ${pkgs.gnused}/bin/sed s/\\\"//g)\""
|
||||
"CTRL_SHIFT, H, exec, xdg-open \"https://wiki.hyprland.org/$(${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl version -j | ${pkgs.jq}/bin/jq $args.tag | ${pkgs.gnused}/bin/sed s/v// | ${pkgs.gnused}/bin/sed s/\\\"//g | ${pkgs.gnugrep}/bin/grep -Po \"[0-9]+\.[0-9]+\").0\""
|
||||
|
||||
"SUPER, F1, exec, ${config.programs.hyprlock.package}/bin/hyprlock"
|
||||
"SUPER, P, exec, ${config.programs.wlogout.package}/bin/wlogout"
|
||||
|
@ -344,11 +345,11 @@
|
|||
"SUPER SHIFT, Z, exec, exec ${config.services.mako.package}/bin/makoctl dismiss -a"
|
||||
|
||||
# Common program shortcuts
|
||||
"SUPER, Space, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
||||
"SUPER, Return, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
||||
"SUPER SHIFT, Return, exec, ${config.programs.emacs.finalPackage}/bin/emacsclient -c"
|
||||
"SUPER, W, exec, ${pkgs.nyxt}/bin/nyxt --no-socket"
|
||||
"SUPER, F, exec, ${pkgs.nautilus}/bin/nautilus"
|
||||
"SUPER, D, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
||||
"SUPER, C, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
||||
"SUPER, E, exec, ${config.programs.emacs.finalPackage}/bin/emacs"
|
||||
"SUPER, W, exec, ${config.programs.firefox.finalPackage}/bin/firefox"
|
||||
"SUPER, F, exec, thunar"
|
||||
|
||||
# Misc useful binds
|
||||
",Print,exec,${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"
|
||||
|
|
|
@ -1,23 +1,46 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
./python/default.nix
|
||||
./lua/default.nix
|
||||
];
|
||||
home.packages = with pkgs; [
|
||||
## Linters
|
||||
shellcheck
|
||||
yamllint
|
||||
home.packages =
|
||||
let
|
||||
pythonEnv = (
|
||||
pkgs.python312.withPackages (
|
||||
ps: with ps; [
|
||||
ipython
|
||||
python-lsp-server
|
||||
pyflakes
|
||||
isort
|
||||
numpy
|
||||
scipy
|
||||
astropy
|
||||
xarray
|
||||
netcdf4
|
||||
matplotlib
|
||||
]
|
||||
)
|
||||
);
|
||||
luaEnv = (pkgs.luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]));
|
||||
in
|
||||
with pkgs;
|
||||
[
|
||||
## Language Environments
|
||||
pythonEnv
|
||||
luaEnv
|
||||
|
||||
## Formatters
|
||||
nixfmt-rfc-style
|
||||
shfmt
|
||||
nodePackages.prettier
|
||||
nodePackages.prettier-plugin-toml
|
||||
## Linters
|
||||
shellcheck
|
||||
ruff
|
||||
|
||||
## Language servers
|
||||
nixd
|
||||
rust-analyzer
|
||||
nodePackages.typescript-language-server
|
||||
];
|
||||
## Formatters
|
||||
nixfmt-rfc-style
|
||||
shfmt
|
||||
stylua
|
||||
nodePackages.prettier
|
||||
|
||||
## Language servers
|
||||
nixd
|
||||
lua-language-server
|
||||
rust-analyzer
|
||||
];
|
||||
home.file.".ipython/profile_default/ipython_config.json".source = ./ipython_config.json;
|
||||
xdg.configFile."ruff/pyproject.toml".source = ./ruff.toml;
|
||||
}
|
||||
|
|
15
system/home/programming/ipython_config.json
Normal file
15
system/home/programming/ipython_config.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"Application": { "log_datefmt": "%Y-%m-%d %H:%M:%S" },
|
||||
"InteractiveShell": {
|
||||
"color_info": true
|
||||
},
|
||||
"InteractiveShellApp": {
|
||||
"exec_PYTHONSTARTUP": false,
|
||||
"exec_lines": ["%load_ext autoreload", "%autoreload 2 --print"]
|
||||
},
|
||||
"TerminalInteractiveShell": {
|
||||
"editing_mode": "emacs",
|
||||
"mouse_support": false,
|
||||
"true_color": true
|
||||
}
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]))
|
||||
lua-language-server
|
||||
stylua
|
||||
];
|
||||
}
|
|
@ -1,18 +1,20 @@
|
|||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
python3 ? pkgs.python3,
|
||||
extraPackages ? with pkgs; [ uv ],
|
||||
python3 ? pkgs.python3Full,
|
||||
extraPackages ? [ ],
|
||||
extraLibs ? [ ],
|
||||
}:
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
ldlibs = lib.makeLibraryPath (
|
||||
with pkgs;
|
||||
[
|
||||
(with pkgs; [
|
||||
stdenv.cc.cc
|
||||
glib
|
||||
glibc
|
||||
zlib
|
||||
zstd
|
||||
]
|
||||
])
|
||||
++ extraLibs
|
||||
);
|
||||
pythonWrapped = pkgs.symlinkJoin {
|
||||
name = "python";
|
||||
|
@ -24,8 +26,12 @@ let
|
|||
};
|
||||
in
|
||||
pkgs.mkShellNoCC {
|
||||
packages = [ pythonWrapped ] ++ extraPackages;
|
||||
packages = [
|
||||
pythonWrapped
|
||||
pkgs.uv
|
||||
] ++ extraPackages;
|
||||
shellHook = ''
|
||||
[ ! -d .venv ] && ${pythonWrapped}/bin/python3 -m venv .venv
|
||||
[ -f .venv/bin/activate ] && source .venv/bin/activate
|
||||
'';
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
pythonEnv = (
|
||||
pkgs.python312.withPackages (
|
||||
ps: with ps; [
|
||||
python-lsp-server
|
||||
isort
|
||||
flake8
|
||||
mypy
|
||||
numpy
|
||||
xarray
|
||||
netcdf4
|
||||
matplotlib
|
||||
]
|
||||
)
|
||||
);
|
||||
in
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.ruff
|
||||
pythonEnv
|
||||
];
|
||||
xdg.configFile."ruff/pyproject.toml".source = ./ruff.toml;
|
||||
}
|
|
@ -24,3 +24,9 @@ HOST="api.github.com"
|
|||
USER="pixelifytica^forge"
|
||||
secret-tool clear host "$HOST" user "$USER"
|
||||
pass show "api/$HOST" | head -n1 | secret-tool store --label="Forge GitHub Token" host "$HOST" user "$USER"
|
||||
|
||||
# IRC
|
||||
HOST="irc.libera.chat"
|
||||
USER="xenia3"
|
||||
secret-tool clear host "$HOST" user "$USER"
|
||||
pass show "social/$HOST" | head -n1 | secret-tool store --label="IRC libera.chat" host "$HOST" user "$USER"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
HOSTS=("$@")
|
||||
# Config files
|
||||
for TARGET in ".inputrc" ".config/starship.toml"; do
|
||||
for TARGET in ".inputrc" ".config/starship.toml" ".ipython/profile_default/ipython_config.json"; do
|
||||
SOURCE="$HOME/$TARGET"
|
||||
echo "--- $SOURCE ---"
|
||||
TMP_TARGET=/tmp/rsync-local-config
|
||||
|
|
|
@ -1,13 +1,27 @@
|
|||
# Clone ~/.config/emacs/ if it doesn't exist, pull otherwise
|
||||
EMACS_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/emacs"
|
||||
EMACS_URL="https://git.xenia.me.uk/pixelifytica/emacs.git"
|
||||
if [ -d "$EMACS_DIR" ]; then
|
||||
git -C "$EMACS_DIR" remote set-url origin "$EMACS_URL"
|
||||
git -C "$EMACS_DIR" pull --ff --ff-only
|
||||
else
|
||||
git clone "$EMACS_URL" "$EMACS_DIR"
|
||||
fi
|
||||
|
||||
# Cleanup legacy Emacs config file/directory
|
||||
[ -f "$HOME/.emacs" ] && rm "$HOME/.emacs"
|
||||
[ -d "$HOME/.emacs.d" ] && rm -r "$HOME/.emacs.d"
|
||||
|
||||
# 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
|
||||
|
@ -29,17 +43,3 @@ for i in "${!SYNC_DIRS[@]}"; do
|
|||
git status --porcelain
|
||||
)
|
||||
done
|
||||
|
||||
# Clone ~/.config/emacs/ if it doesn't exist, pull otherwise
|
||||
EMACS_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/emacs"
|
||||
EMACS_URL="https://git.xenia.me.uk/pixelifytica/emacs.git"
|
||||
if [ -d "$EMACS_DIR" ]; then
|
||||
git -C "$EMACS_DIR" remote set-url origin "$EMACS_URL"
|
||||
git -C "$EMACS_DIR" pull --ff --ff-only
|
||||
else
|
||||
git clone "$EMACS_URL" "$EMACS_DIR"
|
||||
fi
|
||||
|
||||
# Cleanup legacy Emacs config file/directory
|
||||
[ -f "$HOME/.emacs" ] && rm "$HOME/.emacs"
|
||||
[ -d "$HOME/.emacs.d" ] && rm -r "$HOME/.emacs.d"
|
||||
|
|
1
system/home/shell/config.nu
Normal file
1
system/home/shell/config.nu
Normal file
|
@ -0,0 +1 @@
|
|||
$env.config.show_banner = false
|
|
@ -9,18 +9,56 @@
|
|||
./git.nix
|
||||
./ssh.nix
|
||||
./starship.nix
|
||||
./extras.nix
|
||||
];
|
||||
home.shellAliases = {
|
||||
sync-all = "sync-git; vdirsyncer sync; mbsync -a";
|
||||
sync-and-shutdown = "sync-all && shutdown now";
|
||||
protonup = "sudo wg-quick up protonvpn && sudo wg";
|
||||
protondown = "sudo wg-quick down protonvpn";
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
asciiquarium-transparent
|
||||
pipes
|
||||
cbonsai
|
||||
];
|
||||
shellAliases = {
|
||||
sync-all = "sync-git; vdirsyncer sync; mbsync -a";
|
||||
sync-and-shutdown = "sync-all && shutdown now";
|
||||
};
|
||||
};
|
||||
programs = {
|
||||
# Shells
|
||||
bash.enable = true;
|
||||
nushell.enable = true;
|
||||
nushell = {
|
||||
enable = true;
|
||||
configFile.source = ./config.nu;
|
||||
};
|
||||
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}
|
||||
'';
|
||||
};
|
||||
# CLI programs and utilities
|
||||
btop.enable = true;
|
||||
carapace.enable = true;
|
||||
|
@ -63,7 +101,9 @@
|
|||
enable = true;
|
||||
defaultCommand = "${pkgs.fd}/bin/fd --type f";
|
||||
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
||||
changeDirWidgetOptions = [ "--preview '${pkgs.tree}/bin/tree -C {} | head -200'" ];
|
||||
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
|
||||
fileWidgetOptions = [ "--preview '${pkgs.bat}/bin/bat -f {}'" ];
|
||||
colors = {
|
||||
bg = lib.mkForce "-1";
|
||||
"bg+" = lib.mkForce "-1";
|
||||
|
@ -71,8 +111,8 @@
|
|||
};
|
||||
hyfetch = {
|
||||
enable = true;
|
||||
settings = {
|
||||
preset = "pansexual";
|
||||
settings = rec {
|
||||
preset = if light_dark == "dark" then "transgender" else "rainbow";
|
||||
mode = "rgb";
|
||||
light_dark = config.lib.stylix.scheme.variant;
|
||||
lightness = 0.4;
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
asciiquarium-transparent
|
||||
pipes
|
||||
cbonsai
|
||||
];
|
||||
}
|
|
@ -21,11 +21,7 @@
|
|||
"git*".user = "git";
|
||||
"legion" = {
|
||||
user = "pixelifytica";
|
||||
hostname = "192.168.0.31";
|
||||
};
|
||||
"vanguard" = {
|
||||
user = "pixelifytica";
|
||||
hostname = "192.168.0.90";
|
||||
hostname = "192.168.1.225";
|
||||
};
|
||||
"ionos" = {
|
||||
user = "root";
|
||||
|
|
|
@ -5,18 +5,11 @@
|
|||
enableTransience = true;
|
||||
settings = {
|
||||
add_newline = false;
|
||||
aws.symbol = " ";
|
||||
buf.symbol = " ";
|
||||
c.symbol = " ";
|
||||
character = {
|
||||
success_symbol = "[>](bold green)";
|
||||
error_symbol = "[>](bold red)";
|
||||
success_symbol = "[λ](bold green)";
|
||||
error_symbol = "[λ](bold red)";
|
||||
};
|
||||
command_timeout = 2000;
|
||||
conda.symbol = " ";
|
||||
container.symbol = " ";
|
||||
crystal.symbol = " ";
|
||||
dart.symbol = " ";
|
||||
directory = {
|
||||
read_only = " ";
|
||||
truncation_length = 2;
|
||||
|
@ -24,10 +17,6 @@
|
|||
truncate_to_repo = false;
|
||||
};
|
||||
direnv.disabled = false;
|
||||
docker_context.symbol = " ";
|
||||
elixir.symbol = " ";
|
||||
elm.symbol = " ";
|
||||
fennel.symbol = " ";
|
||||
fossil_branch.symbol = " ";
|
||||
git_branch = {
|
||||
symbol = " ";
|
||||
|
@ -57,96 +46,20 @@
|
|||
untracked = " ";
|
||||
typechanged = " ";
|
||||
};
|
||||
golang.symbol = " ";
|
||||
guix_shell.symbol = " ";
|
||||
haskell.symbol = " ";
|
||||
haxe.symbol = " ";
|
||||
hg_branch.symbol = " ";
|
||||
hostname = {
|
||||
ssh_only = false;
|
||||
ssh_symbol = " ";
|
||||
};
|
||||
java.symbol = " ";
|
||||
hostname.ssh_symbol = " ";
|
||||
jobs.symbol = " ";
|
||||
julia.symbol = " ";
|
||||
kotlin.symbol = " ";
|
||||
line_break.disabled = false;
|
||||
localip.disabled = false;
|
||||
lua.symbol = " ";
|
||||
memory_usage = {
|
||||
disabled = false;
|
||||
symbol = " ";
|
||||
};
|
||||
meson.symbol = " ";
|
||||
nim.symbol = " ";
|
||||
nix_shell.symbol = " ";
|
||||
nodejs.symbol = " ";
|
||||
ocaml.symbol = " ";
|
||||
memory_usage.disabled = false;
|
||||
os = {
|
||||
disabled = false;
|
||||
format = "on [$symbol]($style) ";
|
||||
symbols = {
|
||||
Alpaquita = " ";
|
||||
Alpine = " ";
|
||||
Amazon = " ";
|
||||
Android = " ";
|
||||
Arch = " ";
|
||||
Artix = " ";
|
||||
CentOS = " ";
|
||||
Debian = " ";
|
||||
DragonFly = " ";
|
||||
Emscripten = " ";
|
||||
EndeavourOS = " ";
|
||||
Fedora = " ";
|
||||
FreeBSD = " ";
|
||||
Garuda = " ";
|
||||
Gentoo = " ";
|
||||
HardenedBSD = " ";
|
||||
Illumos = " ";
|
||||
Linux = " ";
|
||||
Mabox = " ";
|
||||
Macos = " ";
|
||||
Manjaro = " ";
|
||||
Mariner = " ";
|
||||
MidnightBSD = " ";
|
||||
Mint = " ";
|
||||
NetBSD = " ";
|
||||
NixOS = " ";
|
||||
OpenBSD = " ";
|
||||
openSUSE = " ";
|
||||
OracleLinux = " ";
|
||||
Pop = " ";
|
||||
Raspbian = " ";
|
||||
Redhat = " ";
|
||||
RedHatEnterprise = " ";
|
||||
Redox = " ";
|
||||
Solus = " ";
|
||||
SUSE = " ";
|
||||
Ubuntu = " ";
|
||||
Unknown = " ";
|
||||
Windows = " ";
|
||||
};
|
||||
};
|
||||
package.symbol = " ";
|
||||
perl.symbol = " ";
|
||||
php.symbol = " ";
|
||||
pijul_channel.symbol = " ";
|
||||
python = {
|
||||
python_binary = "python3";
|
||||
symbol = " ";
|
||||
};
|
||||
rlang.symbol = " ";
|
||||
ruby.symbol = " ";
|
||||
rust.symbol = " ";
|
||||
scala.symbol = " ";
|
||||
python.python_binary = "python3";
|
||||
shell = {
|
||||
disabled = false;
|
||||
format = "using [$indicator]($style) ";
|
||||
nu_indicator = "ν";
|
||||
bash_indicator = "";
|
||||
powershell_indicator = "";
|
||||
cmd_indicator = "";
|
||||
unknown_indicator = "";
|
||||
};
|
||||
status = {
|
||||
disabled = false;
|
||||
|
@ -159,12 +72,7 @@
|
|||
sigint_symbol = " ";
|
||||
signal_symbol = " ";
|
||||
};
|
||||
sudo = {
|
||||
disabled = false;
|
||||
symbol = " ";
|
||||
};
|
||||
swift.symbol = " ";
|
||||
zig.symbol = " ";
|
||||
sudo.disabled = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
31
system/home/shell/transient.zsh
Executable file
31
system/home/shell/transient.zsh
Executable file
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
zle-line-init() {
|
||||
emulate -L zsh
|
||||
|
||||
[[ $CONTEXT == start ]] || return 0
|
||||
|
||||
while true; do
|
||||
zle .recursive-edit
|
||||
local -i ret=$?
|
||||
[[ $ret == 0 && $KEYS == $'\4' ]] || break
|
||||
[[ -o ignore_eof ]] || exit 0
|
||||
done
|
||||
|
||||
local saved_prompt=$PROMPT
|
||||
local saved_rprompt=$RPROMPT
|
||||
PROMPT='λ '
|
||||
RPROMPT=''
|
||||
zle .reset-prompt
|
||||
PROMPT=$saved_prompt
|
||||
RPROMPT=$saved_rprompt
|
||||
|
||||
if ((ret)); then
|
||||
zle .send-break
|
||||
else
|
||||
zle .accept-line
|
||||
fi
|
||||
return ret
|
||||
}
|
||||
|
||||
zle -N zle-line-init
|
|
@ -27,16 +27,16 @@ in
|
|||
imports = [ ./default.nix ];
|
||||
systemd.user = {
|
||||
services.dynamic-wallpaper = {
|
||||
Unit = {
|
||||
Description = "Change wallpaper based on time of day";
|
||||
Wants = [ "swww-daemon.service" ];
|
||||
After = [ "swww-daemon.service" ];
|
||||
};
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${dynamicWallpaper}/bin/dynamic-wallpaper";
|
||||
};
|
||||
Unit = {
|
||||
Description = "Change wallpaper based on time of day";
|
||||
Wants = [ "swww-daemon.service" ];
|
||||
After = [ "swww-daemon.service" ];
|
||||
};
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${dynamicWallpaper}/bin/dynamic-wallpaper";
|
||||
};
|
||||
};
|
||||
timers.dynamic-wallpaper.Timer = {
|
||||
OnCalendar = "*:0";
|
||||
Unit = "dynamic-wallpaper.service";
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [ ./alacritty.nix ];
|
||||
}
|
|
@ -2,18 +2,7 @@
|
|||
{
|
||||
home.packages = with pkgs; [
|
||||
(texlive.combine {
|
||||
inherit (texlive)
|
||||
scheme-medium
|
||||
dvisvgm
|
||||
dvipng
|
||||
wrapfig
|
||||
amsmath
|
||||
ulem
|
||||
hyperref
|
||||
capt-of
|
||||
listings
|
||||
bera
|
||||
;
|
||||
inherit (texlive) scheme-full;
|
||||
latex-beamer-ukaea.pkgs = [ (callPackage ./latex-beamer-ukaea/default.nix { }) ];
|
||||
})
|
||||
];
|
||||
|
|
|
@ -10,270 +10,254 @@
|
|||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings.main =
|
||||
let
|
||||
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
|
||||
in
|
||||
{
|
||||
name = "main";
|
||||
layer = "top";
|
||||
position = "left";
|
||||
# Layout
|
||||
"modules-left" = [
|
||||
"hyprland/workspaces"
|
||||
"mpris"
|
||||
];
|
||||
"modules-center" = [ ];
|
||||
"modules-right" = [
|
||||
"custom/notification"
|
||||
"pulseaudio"
|
||||
"network"
|
||||
"bluetooth"
|
||||
"clock#calendar"
|
||||
"clock"
|
||||
"backlight"
|
||||
"battery"
|
||||
"custom/weather"
|
||||
"systemd-failed-units"
|
||||
"tray"
|
||||
];
|
||||
# Module config
|
||||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
"1" = "";
|
||||
"2" = "";
|
||||
"3" = "";
|
||||
"4" = "";
|
||||
"5" = "";
|
||||
"6" = "";
|
||||
"7" = "";
|
||||
default = "";
|
||||
};
|
||||
all-outputs = false;
|
||||
persistent-workspaces = {
|
||||
"1" = [ ];
|
||||
"2" = [ ];
|
||||
"3" = [ ];
|
||||
"4" = [ ];
|
||||
"5" = [ ];
|
||||
"6" = [ ];
|
||||
"7" = [ ];
|
||||
};
|
||||
settings.main = {
|
||||
name = "main";
|
||||
layer = "top";
|
||||
position = "left";
|
||||
# Layout
|
||||
"modules-left" = [
|
||||
"hyprland/workspaces"
|
||||
"mpris"
|
||||
];
|
||||
"modules-center" = [ ];
|
||||
"modules-right" = [
|
||||
"custom/notification"
|
||||
"pulseaudio#source"
|
||||
"pulseaudio#sink"
|
||||
"network"
|
||||
"bluetooth"
|
||||
"custom/calendar-icon"
|
||||
"clock#calendar"
|
||||
"custom/clock-icon"
|
||||
"clock"
|
||||
"backlight"
|
||||
"battery"
|
||||
"custom/weather"
|
||||
"systemd-failed-units"
|
||||
"tray"
|
||||
];
|
||||
# Module config
|
||||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
"1" = "";
|
||||
"2" = "";
|
||||
"3" = "";
|
||||
"4" = "";
|
||||
"5" = "";
|
||||
"6" = "";
|
||||
"7" = "";
|
||||
default = "";
|
||||
};
|
||||
"hyprland/window" = {
|
||||
"format" = "{title}";
|
||||
"max-length" = 50;
|
||||
"rewrite" = {
|
||||
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
|
||||
"(alacritty.*)" = " $1";
|
||||
"(.*) - mpv" = " $1";
|
||||
"swayimg: (.*)" = " $1";
|
||||
"swappy" = " swappy";
|
||||
"(?:/nix/.*)(btm)" = " Resource Usage [$1]";
|
||||
"(?:/nix/.*)(cava)" = " Music Visualiser [$1]";
|
||||
"Mozilla Firefox" = " $1";
|
||||
"(.*) — Mozilla Firefox" = " $1";
|
||||
"Nyxt - (.*)" = " $1";
|
||||
"(.*) - Chromium" = " $1";
|
||||
"(Signal.*)" = " $1";
|
||||
"(WhatsApp for Linux.*)" = " $1";
|
||||
"((?:.*)WebCord.*)" = " $1";
|
||||
"(Cartridges.*)" = " $1";
|
||||
"([Ss]team.*)" = " $1";
|
||||
"(Prism Launcher.*)" = " Minecraft ($1)";
|
||||
"(.*)(?: *)PrusaSlicer-(.*)" = " $1 PrusaSlicer ($2)";
|
||||
"(.*)(?: *)PrusaSlicer G-code Viewer-(.*)" = " $1 G-code Viewer ($2)";
|
||||
"FreeCAD (.*)" = " FreeCAD $1";
|
||||
"(.*) - Blender.* " = " $1";
|
||||
"(Remmina Remote Desktop Client)" = " $1";
|
||||
"(NoMachine|Nxplayer.bin)(?: *)(.*)" = " $1 $2";
|
||||
};
|
||||
};
|
||||
mpris = {
|
||||
"format" = "{player_icon}\n{status_icon}";
|
||||
"tooltip-format" = "{player_icon} ({player}) {status_icon}\n{title}\n{album}\n{artist}";
|
||||
"interval" = 1;
|
||||
"dynamic-order" = [
|
||||
"album"
|
||||
"artist"
|
||||
"title"
|
||||
"position"
|
||||
"length"
|
||||
];
|
||||
"player-icons" = {
|
||||
"default" = "";
|
||||
};
|
||||
"status-icons" = {
|
||||
"playing" = "";
|
||||
"paused" = "";
|
||||
"stopped" = "";
|
||||
};
|
||||
"ignored-players" = [
|
||||
"com"
|
||||
"org"
|
||||
"firefox"
|
||||
];
|
||||
};
|
||||
pulseaudio = {
|
||||
scroll-step = 5;
|
||||
format = "{format_source}\n{icon}";
|
||||
# format-muted = "{format_source} {icon}";
|
||||
format-source = "";
|
||||
format-source-muted = "";
|
||||
format-icons = {
|
||||
car = "";
|
||||
default = [
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
default-muted = "";
|
||||
hands-free = "";
|
||||
headset = "";
|
||||
phone = "";
|
||||
portable = "";
|
||||
headphone = "";
|
||||
};
|
||||
tooltip = true;
|
||||
tooltip-format = "{desc} ({volume}%)";
|
||||
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
on-click-right = "${config.services.avizo.package}/bin/volumectl %";
|
||||
on-scroll-up = "${config.services.avizo.package}/bin/volumectl -u + 5";
|
||||
on-scroll-down = "${config.services.avizo.package}/bin/volumectl -u - 5";
|
||||
};
|
||||
network = {
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
format-wifi = "{icon}";
|
||||
format-ethernet = "";
|
||||
format-linked = "";
|
||||
format-disconnected = "";
|
||||
tooltip-format = "{essid} ({signalStrength}%)";
|
||||
on-click = "${terminal} ${pkgs.networkmanager}/bin/nmtui";
|
||||
};
|
||||
bluetooth = {
|
||||
format = "";
|
||||
format-disabled = "";
|
||||
format-off = "";
|
||||
format-on = "";
|
||||
format-connected = "";
|
||||
tooltip-format = "{status} | {device_alias}";
|
||||
on-click = "${terminal} ${pkgs.bluez}/bin/bluetoothctl";
|
||||
};
|
||||
"clock#calendar" =
|
||||
let
|
||||
size = "${toString config.stylix.fonts.sizes.popups}pt";
|
||||
in
|
||||
{
|
||||
format = "";
|
||||
tooltip-format = "<span size='${size}'>{calendar}</span>";
|
||||
calendar = {
|
||||
mode = "month";
|
||||
weeks-pos = "left";
|
||||
on-scroll = 1;
|
||||
format =
|
||||
let
|
||||
scheme = config.lib.stylix.scheme.withHashtag;
|
||||
in
|
||||
{
|
||||
months = "<span color='${scheme.red}'><b>{}</b></span>";
|
||||
weeks = "<span color='${scheme.cyan}'><i>W{}</i></span>";
|
||||
weekdays = "<span color='${scheme.orange}'><u>{}</u></span>";
|
||||
days = "<span color='${scheme.base05}'>{}</span>";
|
||||
today = "<span color='${scheme.magenta}'><b><u>{}</u></b></span>";
|
||||
};
|
||||
};
|
||||
actions = {
|
||||
on-scroll-up = "shift_up";
|
||||
on-scroll-down = "shift_down";
|
||||
};
|
||||
};
|
||||
clock = {
|
||||
format = "{:%H\n%M}";
|
||||
tooltip = false;
|
||||
};
|
||||
backlight = {
|
||||
format = "{icon}";
|
||||
tooltip-format = "{percent}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
battery = {
|
||||
states = {
|
||||
warning = 20;
|
||||
critical = 10;
|
||||
};
|
||||
format = "{icon}";
|
||||
format-time = "{H}:{m}";
|
||||
format-charging = "";
|
||||
format-plugged = "";
|
||||
# format-warning = "{icon}{capacity}%";
|
||||
# format-critical = "{icon}{capacity}% ({time})";
|
||||
tooltip-format = "{capacity}% | {power}W | {time}";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
"systemd-failed-units" = {
|
||||
hide-on-ok = true;
|
||||
format = "";
|
||||
system = true;
|
||||
user = false;
|
||||
};
|
||||
"custom/notification" =
|
||||
let
|
||||
makoctl = "${config.services.mako.package}/bin/makoctl";
|
||||
jq = "${pkgs.jq}/bin/jq";
|
||||
in
|
||||
{
|
||||
exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo '' ) || echo '' ";
|
||||
format = "{}";
|
||||
tooltip = false;
|
||||
on-click = "${makoctl} dismiss -a";
|
||||
interval = 3;
|
||||
};
|
||||
"custom/weather" =
|
||||
let
|
||||
date-format = "%Y-%m-%d";
|
||||
custom-indicator = "{ICON}"; # "{temp_C}°C({FeelsLikeC}°C)";
|
||||
in
|
||||
{
|
||||
format = "{}";
|
||||
tooltip = true;
|
||||
interval = 900; # Every 15 minutes
|
||||
exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
|
||||
return-type = "json";
|
||||
};
|
||||
tray = {
|
||||
icon-size = 20;
|
||||
show-passive-items = true;
|
||||
spacing = 5;
|
||||
all-outputs = false;
|
||||
persistent-workspaces = {
|
||||
"1" = [ ];
|
||||
"2" = [ ];
|
||||
"3" = [ ];
|
||||
"4" = [ ];
|
||||
"5" = [ ];
|
||||
"6" = [ ];
|
||||
"7" = [ ];
|
||||
};
|
||||
};
|
||||
mpris = {
|
||||
"format" = "{player_icon}\n{status_icon}";
|
||||
"tooltip-format" = "{player_icon} ({player}) {status_icon}\n{title}\n{album}\n{artist}";
|
||||
"interval" = 1;
|
||||
"dynamic-order" = [
|
||||
"album"
|
||||
"artist"
|
||||
"title"
|
||||
"position"
|
||||
"length"
|
||||
];
|
||||
"player-icons" = {
|
||||
"default" = "";
|
||||
};
|
||||
"status-icons" = {
|
||||
"playing" = "";
|
||||
"paused" = "";
|
||||
"stopped" = "";
|
||||
};
|
||||
"ignored-players" = [
|
||||
"com"
|
||||
"firefox"
|
||||
];
|
||||
};
|
||||
"pulseaudio#source" = {
|
||||
scroll-step = 5;
|
||||
format = "{format_source}";
|
||||
format-source = "";
|
||||
format-source-muted = "";
|
||||
tooltip = true;
|
||||
tooltip-format = "{desc} ({volume}%)";
|
||||
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
on-click-right = "${config.services.avizo.package}/bin/volumectl %";
|
||||
on-scroll-up = "${config.services.avizo.package}/bin/volumectl -u + 5";
|
||||
on-scroll-down = "${config.services.avizo.package}/bin/volumectl -u - 5";
|
||||
};
|
||||
"pulseaudio#sink" = {
|
||||
scroll-step = 5;
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
car = "";
|
||||
default = [
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
default-muted = "";
|
||||
hands-free = "";
|
||||
headset = "";
|
||||
phone = "";
|
||||
portable = "";
|
||||
headphone = "";
|
||||
};
|
||||
tooltip = true;
|
||||
tooltip-format = "{desc} ({volume}%)";
|
||||
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
on-click-right = "${config.services.avizo.package}/bin/volumectl %";
|
||||
on-scroll-up = "${config.services.avizo.package}/bin/volumectl -u + 5";
|
||||
on-scroll-down = "${config.services.avizo.package}/bin/volumectl -u - 5";
|
||||
};
|
||||
network = {
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
format-wifi = "{icon}";
|
||||
format-ethernet = "";
|
||||
format-linked = "";
|
||||
format-disconnected = "";
|
||||
tooltip-format = "{essid} ({signalStrength}%)";
|
||||
on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||
};
|
||||
bluetooth = {
|
||||
format = "";
|
||||
format-disabled = "";
|
||||
format-off = "";
|
||||
format-on = "";
|
||||
format-connected = "";
|
||||
tooltip-format = "{status} | {device_alias}";
|
||||
on-click = "${pkgs.blueman}/bin/blueman-manager";
|
||||
};
|
||||
"custom/calendar-icon" = {
|
||||
format = "";
|
||||
tooltip = false;
|
||||
};
|
||||
"clock#calendar" =
|
||||
let
|
||||
size = "${toString config.stylix.fonts.sizes.popups}pt";
|
||||
in
|
||||
{
|
||||
format = "{:%d\n%m}";
|
||||
tooltip-format = "<span size='${size}'>{calendar}</span>";
|
||||
calendar = {
|
||||
mode = "month";
|
||||
weeks-pos = "left";
|
||||
on-scroll = 1;
|
||||
format =
|
||||
let
|
||||
scheme = config.lib.stylix.scheme.withHashtag;
|
||||
in
|
||||
{
|
||||
months = "<span color='${scheme.red}'><b>{}</b></span>";
|
||||
weeks = "<span color='${scheme.cyan}'><i>W{}</i></span>";
|
||||
weekdays = "<span color='${scheme.orange}'><u>{}</u></span>";
|
||||
days = "<span color='${scheme.base05}'>{}</span>";
|
||||
today = "<span color='${scheme.magenta}'><b><u>{}</u></b></span>";
|
||||
};
|
||||
};
|
||||
actions = {
|
||||
on-scroll-up = "shift_up";
|
||||
on-scroll-down = "shift_down";
|
||||
};
|
||||
};
|
||||
"custom/clock-icon" = {
|
||||
format = "";
|
||||
tooltip = false;
|
||||
};
|
||||
clock = {
|
||||
format = "{:%H\n%M}";
|
||||
tooltip = false;
|
||||
};
|
||||
backlight = {
|
||||
format = "{icon}";
|
||||
tooltip-format = "{percent}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
battery = {
|
||||
states = {
|
||||
warning = 20;
|
||||
critical = 10;
|
||||
};
|
||||
format = "{icon}";
|
||||
format-time = "{H}:{m}";
|
||||
format-charging = "";
|
||||
format-plugged = "";
|
||||
tooltip-format = "{capacity}% | {power}W | {time}";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
"systemd-failed-units" = {
|
||||
hide-on-ok = true;
|
||||
format = "";
|
||||
system = true;
|
||||
user = false;
|
||||
};
|
||||
"custom/notification" =
|
||||
let
|
||||
makoctl = "${config.services.mako.package}/bin/makoctl";
|
||||
jq = "${pkgs.jq}/bin/jq";
|
||||
in
|
||||
{
|
||||
exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo '' ) || echo '' ";
|
||||
format = "{}";
|
||||
tooltip = false;
|
||||
on-click = "${makoctl} dismiss -a";
|
||||
interval = 3;
|
||||
};
|
||||
"custom/weather" =
|
||||
let
|
||||
date-format = "%Y-%m-%d";
|
||||
custom-indicator = "{ICON}"; # "{temp_C}°C({FeelsLikeC}°C)";
|
||||
in
|
||||
{
|
||||
format = "{}";
|
||||
tooltip = true;
|
||||
interval = 900; # Every 15 minutes
|
||||
exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
|
||||
return-type = "json";
|
||||
};
|
||||
tray = {
|
||||
icon-size = 20;
|
||||
show-passive-items = true;
|
||||
spacing = 5;
|
||||
};
|
||||
};
|
||||
style =
|
||||
let
|
||||
scheme = config.lib.stylix.scheme.withHashtag;
|
||||
|
@ -283,7 +267,7 @@
|
|||
* {
|
||||
all: unset;
|
||||
font-family: ${config.stylix.fonts.monospace.name};
|
||||
font-size: ${toString (config.stylix.fonts.sizes.desktop + 2)}px;
|
||||
font-size: ${toString config.stylix.fonts.sizes.desktop}pt;
|
||||
}
|
||||
|
||||
window {
|
||||
|
@ -316,22 +300,6 @@
|
|||
margin: 0px;
|
||||
}
|
||||
|
||||
#workspaces,
|
||||
#window,
|
||||
#mpris,
|
||||
#custom-notification,
|
||||
#pulseaudio,
|
||||
#network,
|
||||
#bluetooth,
|
||||
#clock,
|
||||
#backlight,
|
||||
#battery,
|
||||
#custom-weather,
|
||||
#tray {
|
||||
margin: 0px;
|
||||
padding: 2px 4px 2px 3px;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
background: ${scheme.base00};
|
||||
border-radius: 5px;
|
||||
|
@ -339,9 +307,6 @@
|
|||
padding: 2px 3px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 2px 5px 2px 1px;
|
||||
}
|
||||
#workspaces button.empty {
|
||||
color: ${scheme.base03};
|
||||
}
|
||||
|
@ -359,31 +324,30 @@
|
|||
#custom-notification {
|
||||
color: ${scheme.base08};
|
||||
}
|
||||
#pulseaudio {
|
||||
#pulseaudio.source {
|
||||
color: ${scheme.base09};
|
||||
}
|
||||
#network {
|
||||
#pulseaudio.sink {
|
||||
color: ${scheme.base0A};
|
||||
padding: 2px 6px 2px 1px;
|
||||
}
|
||||
#bluetooth {
|
||||
#network {
|
||||
color: ${scheme.base0B};
|
||||
}
|
||||
#clock.calendar {
|
||||
#bluetooth {
|
||||
color: ${scheme.base0C};
|
||||
padding: 2px 3px 2px 3px;
|
||||
}
|
||||
#clock {
|
||||
#custom-calendar-icon,
|
||||
#clock.calendar {
|
||||
color: ${scheme.base0D};
|
||||
padding: 2px 1px 2px 2px;
|
||||
}
|
||||
#custom-clock-icon,
|
||||
#clock {
|
||||
color: ${scheme.base0E};
|
||||
}
|
||||
#backlight {
|
||||
color: ${scheme.base0F};
|
||||
}
|
||||
|
||||
#backlight {
|
||||
padding: 2px 3px 2px 3px;
|
||||
}
|
||||
#battery {
|
||||
padding: 2px 2px 2px 4px;
|
||||
}
|
||||
#battery.warning {
|
||||
color: ${scheme.base09};
|
||||
}
|
||||
|
@ -395,9 +359,6 @@
|
|||
color: ${scheme.base0B};
|
||||
}
|
||||
|
||||
#systemd-failed-units {
|
||||
padding: 2px 4px 2px 1px;
|
||||
}
|
||||
#systemd-failed-units.ok {
|
||||
color: ${scheme.base0B}
|
||||
}
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
)
|
||||
|
||||
(defalias
|
||||
capsctrl (tap-hold $tap-time $hold-time caps lctl)
|
||||
capsctrl (tap-hold $tap-time $hold-time esc lctl)
|
||||
a (tap-hold $tap-time $hold-time a lmet)
|
||||
s (tap-hold $tap-time $hold-time s lalt)
|
||||
d (tap-hold $tap-time $hold-time d lctl)
|
||||
f (tap-hold $tap-time $hold-time f lsft)
|
||||
j (tap-hold $tap-time $hold-time j lsft)
|
||||
k (tap-hold $tap-time $hold-time k lctl)
|
||||
l (tap-hold $tap-time $hold-time l lalt)
|
||||
s (tap-hold $tap-time $hold-time s lsft)
|
||||
d (tap-hold $tap-time $hold-time d lalt)
|
||||
f (tap-hold $tap-time $hold-time f lctl)
|
||||
j (tap-hold $tap-time $hold-time j lctl)
|
||||
k (tap-hold $tap-time $hold-time k lalt)
|
||||
l (tap-hold $tap-time $hold-time l lsft)
|
||||
; (tap-hold $tap-time $hold-time ; lmet)
|
||||
)
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
let
|
||||
emacs = [ "emacsclient.desktop" ];
|
||||
emacs = [ "emacs.desktop" ];
|
||||
browser = [ "firefox.desktop" ];
|
||||
in
|
||||
{
|
||||
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||
"inode/symlink" = [ "org.gnome.Nautilus.desktop" ];
|
||||
"inode/directory" = [ "org.xfce.thunar.desktop" ];
|
||||
"inode/symlink" = [ "org.xfce.thunar.desktop" ];
|
||||
|
||||
"image/jpeg" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
||||
"image/png" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
||||
"image/jpeg" = [ "com.xfce.ristretto.desktop" ];
|
||||
"image/png" = [ "com.xfce.ristretto.desktop" ];
|
||||
"audio/mpeg" = [ "com.github.neithern.g4music.desktop" ];
|
||||
"video/mp4" = [ "com.github.rafostar.Clapper.desktop" ];
|
||||
"video/mp4" = [ "mpv.desktop" ];
|
||||
|
||||
"text/plain" = emacs;
|
||||
"text/richtext" = emacs;
|
||||
|
@ -64,7 +64,7 @@ in
|
|||
"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/mailto" = [ "emacs-mail.desktop" ];
|
||||
"x-scheme-handler/unknown" = emacs;
|
||||
|
||||
"x-scheme-handler/prusaslicer" = [ "PrusaSlicerURLProtocol.desktop" ];
|
||||
|
@ -72,7 +72,4 @@ in
|
|||
"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" ];
|
||||
"x-scheme-handler/zoomus" = browser;
|
||||
"x-scheme-handler/zoommtg" = browser;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ config, pkgs, ... }:
|
||||
{ config, ... }:
|
||||
{
|
||||
imports = [ ./caddy.nix ];
|
||||
services = {
|
||||
|
@ -23,16 +23,10 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
# gitea-actions-runner = {
|
||||
# package = pkgs.forgejo-runner;
|
||||
# instances.default = {
|
||||
# enable = true;
|
||||
# name = "monolith";
|
||||
# url = config.services.forgejo.settings.server.ROOT_URL;
|
||||
# tokenFile = /var/lib/forgejo/runner_registration_token;
|
||||
# labels = ["native:host"];
|
||||
# };
|
||||
# };
|
||||
caddy.virtualHosts."git.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:3100";
|
||||
caddy.virtualHosts."git.xenia.me.uk".extraConfig =
|
||||
let
|
||||
port = config.services.forgejo.settings.server.HTTP_PORT;
|
||||
in
|
||||
"reverse_proxy http://localhost:${toString port}";
|
||||
};
|
||||
}
|
||||
|
|
28
system/services/webdav.nix
Normal file
28
system/services/webdav.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
imports = [ ./caddy.nix ];
|
||||
services = {
|
||||
webdav = {
|
||||
enable = true;
|
||||
settings = {
|
||||
address = "0.0.0.0";
|
||||
port = 6065;
|
||||
debug = true;
|
||||
behindProxy = true;
|
||||
directory = "/srv/webdav";
|
||||
users = [
|
||||
{
|
||||
username = "pixelifytica";
|
||||
password = "{bcrypt}$2b$12$ulThbG9JGJP/FYI4RyX8sufMOE/vfw928gJMFedajiINbqx585wY.";
|
||||
permissions = "CRUD";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
caddy.virtualHosts."files.xenia.me.uk".extraConfig =
|
||||
let
|
||||
inherit (config.services.webdav.settings) port;
|
||||
in
|
||||
"reverse_proxy http://localhost:${toString port}";
|
||||
};
|
||||
}
|
|
@ -5,15 +5,13 @@
|
|||
...
|
||||
}:
|
||||
{
|
||||
services.samba.enable = true;
|
||||
environment.systemPackages = with pkgs; [ twinkle ];
|
||||
home-manager.users.${username} =
|
||||
{ config, ... }:
|
||||
{
|
||||
imports = [ ./home/openfortivpn/ukaea.nix ];
|
||||
programs = {
|
||||
git.userEmail = config.accounts.email.accounts.outlook.address;
|
||||
firefox.profiles.user.settings."browser.startup.homepage" = "https://nucleus.ukaea.uk";
|
||||
};
|
||||
programs.git.userEmail = config.accounts.email.accounts.outlook.address;
|
||||
accounts.email.accounts = {
|
||||
proton.primary = lib.mkForce false;
|
||||
outlook.primary = lib.mkForce true;
|
||||
|
|
Loading…
Reference in a new issue