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:
|
build:
|
||||||
nix build --no-link --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
|
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
|
nixos-rebuild build --flake .#Legion
|
||||||
nix copy ./result --to ssh://legion
|
nix copy ./result --to ssh://legion && rm ./result
|
||||||
rm ./result
|
|
||||||
|
|
||||||
flathub:
|
flathub:
|
||||||
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
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"
|
"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": {
|
"gnome-shell": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -159,11 +212,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1735141468,
|
"lastModified": 1736061677,
|
||||||
"narHash": "sha256-VIAjBr1qGcEbmhLwQJD6TABppPMggzOvqFsqkDoMsAY=",
|
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "4005c3ff7505313cbc21081776ad0ce5dfd7a3ce",
|
"rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -175,11 +228,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733097829,
|
"lastModified": 1735554305,
|
||||||
"narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
|
"narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
|
"rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -205,6 +258,7 @@
|
||||||
"base16-vim": "base16-vim",
|
"base16-vim": "base16-vim",
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
|
"git-hooks": "git-hooks",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"home-manager": [
|
"home-manager": [
|
||||||
"home-manager"
|
"home-manager"
|
||||||
|
@ -218,11 +272,11 @@
|
||||||
"tinted-tmux": "tinted-tmux"
|
"tinted-tmux": "tinted-tmux"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1734110444,
|
"lastModified": 1736019457,
|
||||||
"narHash": "sha256-fp1iV2JldCSvz+7ODzXYUkQ+H7zyiWw5E0MQ4ILC4vw=",
|
"narHash": "sha256-MWe3RXEV9dov1wFZraWagVAxynPo/VceStIYfNRgqG4=",
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "9015d5d0d5d100f849129c43d257b827d300b089",
|
"rev": "5204b085385c0bfaa1eb1bb0f8dc81922012128d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -302,11 +356,11 @@
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1735135567,
|
"lastModified": 1736154270,
|
||||||
"narHash": "sha256-8T3K5amndEavxnludPyfj3Z1IkcFdRpR23q+T0BVeZE=",
|
"narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "9e09d30a644c57257715902efbb3adc56c79cf28",
|
"rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
15
flake.nix
15
flake.nix
|
@ -30,9 +30,22 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
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
|
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;
|
formatter.x86_64-linux = treefmt.config.build.wrapper;
|
||||||
checks.x86_64-linux.formatting = treefmt.config.build.check self;
|
checks.x86_64-linux.formatting = treefmt.config.build.check self;
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
|
|
|
@ -9,9 +9,10 @@
|
||||||
./services/nix-serve.nix
|
./services/nix-serve.nix
|
||||||
./services/sshd.nix
|
./services/sshd.nix
|
||||||
./services/syncthing.nix
|
./services/syncthing.nix
|
||||||
|
./services/webdav.nix
|
||||||
./services/xandikos.nix
|
./services/xandikos.nix
|
||||||
# ./services/minecraft.nix
|
# ./services/minecraft.nix
|
||||||
./services/satisfactory/default.nix
|
# ./services/satisfactory/default.nix
|
||||||
];
|
];
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
|
|
|
@ -5,5 +5,6 @@
|
||||||
home.stateVersion = "23.05";
|
home.stateVersion = "23.05";
|
||||||
wayland.windowManager.hyprland.settings.monitor = [ "eDP-1,preferred,auto,1.25" ];
|
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";
|
system.stateVersion = "23.05";
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
./desktop.nix
|
./desktop.nix
|
||||||
./steam.nix
|
./steam.nix
|
||||||
];
|
];
|
||||||
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/onedark.yaml";
|
|
||||||
home-manager.users.${username} = {
|
home-manager.users.${username} = {
|
||||||
imports = [ ./home/swww/default.nix ];
|
imports = [ ./home/swww/default.nix ];
|
||||||
home = {
|
home = {
|
||||||
|
@ -63,9 +62,7 @@
|
||||||
workspace = [
|
workspace = [
|
||||||
"2, monitor:desc:${secondary}"
|
"2, monitor:desc:${secondary}"
|
||||||
"3, monitor:desc:${secondary}"
|
"3, monitor:desc:${secondary}"
|
||||||
"4, monitor:desc:${primary}"
|
|
||||||
"5, monitor:desc:${primary}"
|
"5, monitor:desc:${primary}"
|
||||||
"6, monitor:desc:${primary}"
|
|
||||||
"7, monitor:desc:${primary}"
|
"7, monitor:desc:${primary}"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -91,5 +88,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services.hardware.openrgb.enable = true;
|
services.hardware.openrgb.enable = true;
|
||||||
|
networking.wg-quick.interfaces.wg0.configFile = "/etc/wireguard/gb-mnc-wg-001.conf";
|
||||||
system.stateVersion = "23.05";
|
system.stateVersion = "23.05";
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,19 +18,12 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nixVersions.latest;
|
package = pkgs.nixVersions.latest;
|
||||||
settings = {
|
settings = {
|
||||||
cores = 0;
|
trusted-users = [ username ];
|
||||||
max-jobs = "auto";
|
|
||||||
trusted-users = [
|
|
||||||
"root"
|
|
||||||
username
|
|
||||||
];
|
|
||||||
experimental-features = [
|
experimental-features = [
|
||||||
"nix-command"
|
"nix-command"
|
||||||
"flakes"
|
"flakes"
|
||||||
];
|
];
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
substituters = [ "https://nix.xenia.me.uk" ];
|
|
||||||
trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ];
|
|
||||||
};
|
};
|
||||||
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||||
channel.enable = true;
|
channel.enable = true;
|
||||||
|
@ -39,16 +32,6 @@
|
||||||
options = "--delete-older-than 3d";
|
options = "--delete-older-than 3d";
|
||||||
};
|
};
|
||||||
optimise.automatic = true;
|
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 = ''
|
extraOptions = ''
|
||||||
keep-outputs = false
|
keep-outputs = false
|
||||||
keep-derivations = false
|
keep-derivations = false
|
||||||
|
@ -67,7 +50,7 @@
|
||||||
"nomachine-client"
|
"nomachine-client"
|
||||||
];
|
];
|
||||||
system.autoUpgrade = {
|
system.autoUpgrade = {
|
||||||
enable = true;
|
enable = false; # TEMP disable until server is back up
|
||||||
persistent = true;
|
persistent = true;
|
||||||
allowReboot = false;
|
allowReboot = false;
|
||||||
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
flake = "git+${config.nix.registry.my-nixos.to.url}";
|
||||||
|
@ -110,6 +93,7 @@
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
group = "users";
|
group = "users";
|
||||||
description = "Evie Litherland-Smith";
|
description = "Evie Litherland-Smith";
|
||||||
|
shell = pkgs.zsh;
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
"wheel"
|
"wheel"
|
||||||
|
@ -134,6 +118,7 @@
|
||||||
imports = [
|
imports = [
|
||||||
./home/shell/default.nix
|
./home/shell/default.nix
|
||||||
./home/scripts/default.nix
|
./home/scripts/default.nix
|
||||||
|
./home/gpg/default.nix
|
||||||
];
|
];
|
||||||
home = {
|
home = {
|
||||||
inherit username;
|
inherit username;
|
||||||
|
@ -165,12 +150,14 @@
|
||||||
dig
|
dig
|
||||||
wireguard-tools
|
wireguard-tools
|
||||||
librespeed-cli
|
librespeed-cli
|
||||||
|
dust
|
||||||
quickemu
|
quickemu
|
||||||
distrobox
|
distrobox
|
||||||
];
|
];
|
||||||
localBinInPath = true;
|
localBinInPath = true;
|
||||||
};
|
};
|
||||||
programs = {
|
programs = {
|
||||||
|
zsh.enable = true;
|
||||||
command-not-found.enable = false;
|
command-not-found.enable = false;
|
||||||
ssh.startAgent = true;
|
ssh.startAgent = true;
|
||||||
nano = {
|
nano = {
|
||||||
|
@ -214,30 +201,43 @@
|
||||||
base16Scheme = lib.mkDefault "${pkgs.base16-schemes}/share/themes/one-light.yaml";
|
base16Scheme = lib.mkDefault "${pkgs.base16-schemes}/share/themes/one-light.yaml";
|
||||||
polarity = config.lib.stylix.scheme.variant;
|
polarity = config.lib.stylix.scheme.variant;
|
||||||
opacity = {
|
opacity = {
|
||||||
applications = 0.9;
|
applications = 1.0;
|
||||||
desktop = 0.7;
|
terminal = 0.8125; # 0x0.D
|
||||||
popups = 0.5;
|
desktop = 0.75; # 0x0.C
|
||||||
terminal = 0.9;
|
popups = 0.6875; # 0x0.B
|
||||||
};
|
};
|
||||||
cursor = {
|
cursor = {
|
||||||
package = pkgs.volantes-cursors;
|
package = pkgs.volantes-cursors;
|
||||||
name = "volantes_cursors";
|
name = "volantes_cursors";
|
||||||
size = 32;
|
size = 32;
|
||||||
};
|
};
|
||||||
fonts = {
|
fonts =
|
||||||
monospace = {
|
let
|
||||||
package = pkgs.nerdfonts.override { fonts = [ "DejaVuSansMono" ]; };
|
fpkgs = pkgs.callPackage ./fonts.nix { };
|
||||||
name = "DejaVuSansM Nerd Font";
|
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; [
|
fonts.packages = with pkgs; [
|
||||||
|
dejavu_fonts # Compatibility
|
||||||
liberation_ttf # Documents
|
liberation_ttf # Documents
|
||||||
lmodern # LaTeX
|
lmodern # LaTeX
|
||||||
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
||||||
|
|
|
@ -23,7 +23,10 @@
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
libsecret
|
libsecret
|
||||||
libnotify
|
libnotify
|
||||||
|
libarchive
|
||||||
xdg-utils
|
xdg-utils
|
||||||
|
imagemagick
|
||||||
|
ffmpeg
|
||||||
hunspell
|
hunspell
|
||||||
hunspellDicts.en_GB-large
|
hunspellDicts.en_GB-large
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
|
@ -31,19 +34,14 @@
|
||||||
grim
|
grim
|
||||||
slurp
|
slurp
|
||||||
swappy
|
swappy
|
||||||
nautilus
|
xfce.ristretto
|
||||||
libreoffice
|
|
||||||
evince
|
|
||||||
image-roll
|
|
||||||
imagemagick
|
|
||||||
clapper
|
|
||||||
g4music
|
g4music
|
||||||
ffmpeg
|
|
||||||
picard
|
picard
|
||||||
|
zotero
|
||||||
|
evince
|
||||||
|
libreoffice
|
||||||
webcord
|
webcord
|
||||||
signal-desktop
|
signal-desktop
|
||||||
whatsapp-for-linux
|
|
||||||
teams-for-linux
|
|
||||||
nomachine-client
|
nomachine-client
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -60,24 +58,36 @@
|
||||||
};
|
};
|
||||||
programs = {
|
programs = {
|
||||||
dconf.enable = true;
|
dconf.enable = true;
|
||||||
|
xfconf.enable = true;
|
||||||
noisetorch.enable = true;
|
noisetorch.enable = true;
|
||||||
seahorse.enable = true;
|
seahorse.enable = true;
|
||||||
file-roller.enable = true;
|
file-roller.enable = true;
|
||||||
hyprland.enable = true;
|
thunar = {
|
||||||
xwayland.enable = true;
|
enable = true;
|
||||||
|
plugins = with pkgs.xfce; [
|
||||||
|
thunar-archive-plugin
|
||||||
|
thunar-volman
|
||||||
|
];
|
||||||
|
};
|
||||||
|
hyprland = {
|
||||||
|
enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
gtk.iconCache.enable = true;
|
gtk.iconCache.enable = true;
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
platformTheme = "gnome";
|
||||||
style = if config.lib.stylix.scheme.variant == "light" then "adwaita" else "adwaita-dark";
|
style = if config.lib.stylix.scheme.variant == "light" then "adwaita" else "adwaita-dark";
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
|
xserver.xkb.layout = "gb";
|
||||||
gnome.gnome-keyring.enable = true;
|
gnome.gnome-keyring.enable = true;
|
||||||
flatpak.enable = true;
|
flatpak.enable = true;
|
||||||
printing.enable = true;
|
printing.enable = true;
|
||||||
tumbler.enable = true;
|
tumbler.enable = true;
|
||||||
udisks2.enable = true;
|
udisks2.enable = true;
|
||||||
gnome.sushi.enable = true;
|
blueman.enable = config.hardware.bluetooth.enable;
|
||||||
gvfs = {
|
gvfs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.gnome.gvfs;
|
package = pkgs.gnome.gvfs;
|
||||||
|
@ -111,10 +121,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
xkb.layout = "gb";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -131,21 +137,21 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./home/hyprland.nix
|
./home/hyprland.nix
|
||||||
./home/terminal/default.nix
|
./home/terminal.nix
|
||||||
./home/browser/firefox.nix
|
./home/browser/firefox.nix
|
||||||
./home/browser/nyxt.nix
|
|
||||||
./home/emacs/default.nix
|
./home/emacs/default.nix
|
||||||
./home/email/default.nix
|
./home/email/default.nix
|
||||||
./home/calendar/default.nix
|
./home/calendar/default.nix
|
||||||
./home/password-store/default.nix
|
./home/password-store/default.nix
|
||||||
];
|
];
|
||||||
home.file.${config.gtk.gtk2.configLocation}.force = true;
|
home.file.${config.gtk.gtk2.configLocation}.force = true;
|
||||||
|
programs.mpv.enable = true;
|
||||||
services = {
|
services = {
|
||||||
syncthing.enable = true;
|
syncthing.enable = true;
|
||||||
gammastep = {
|
gammastep = {
|
||||||
inherit (osConfig.location) latitude longitude provider;
|
inherit (osConfig.location) latitude longitude provider;
|
||||||
enable = true;
|
enable = true;
|
||||||
tray = true;
|
tray = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
gtk = {
|
gtk = {
|
||||||
|
@ -199,44 +205,24 @@
|
||||||
early_exit=false
|
early_exit=false
|
||||||
fill_shape=false
|
fill_shape=false
|
||||||
'';
|
'';
|
||||||
# WhatsApp config
|
# Matplotlib default figure sizes and font settings
|
||||||
"whatsapp-for-linux/settings.conf" =
|
"matplotlib/matplotlibrc".text =
|
||||||
let
|
let
|
||||||
inherit (config.lib.stylix.scheme) variant;
|
inherit (config.stylix) fonts;
|
||||||
in
|
in
|
||||||
{
|
''
|
||||||
force = true;
|
font.family: sans-serif
|
||||||
text = ''
|
font.serif: ${fonts.serif.name}, DejaVu Serif
|
||||||
[web]
|
font.sans-serif: ${fonts.sansSerif.name}, DejaVu Sans
|
||||||
allow-permissions=true
|
font.monospace: ${fonts.monospace.name}, DejaVu Sans Mono
|
||||||
hw-accel=2
|
figure.figsize: 8, 6
|
||||||
|
figure.dpi: 150
|
||||||
[general]
|
figure.autolayout: True
|
||||||
notification-sounds=true
|
savefig.dpi: 300
|
||||||
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" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Autostart some programs
|
# Autostart some programs
|
||||||
"autostart/signal-desktop.desktop".source =
|
"autostart/signal-desktop.desktop".source =
|
||||||
"${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
"${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",
|
"name": "Awesome Wayland",
|
||||||
"url": "https://github.com/natpen/awesome-wayland",
|
"url": "https://github.com/rcalixte/awesome-wayland",
|
||||||
"tags": ["Software", "Repositories"]
|
"tags": ["Software", "Repositories"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -89,6 +89,11 @@
|
||||||
"url": "https://github.com/reHackable/awesome-reMarkable",
|
"url": "https://github.com/reHackable/awesome-reMarkable",
|
||||||
"tags": ["Software", "Repositories"]
|
"tags": ["Software", "Repositories"]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "We Are Wayland Now!",
|
||||||
|
"url": "https://wearewaylandnow.com/",
|
||||||
|
"tags": ["Software"]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "NixOS Wiki",
|
"name": "NixOS Wiki",
|
||||||
"url": "https://nixos.wiki",
|
"url": "https://nixos.wiki",
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
((default-modes
|
((default-modes
|
||||||
(pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))
|
(pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))
|
||||||
(default-modes
|
(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
|
(define-configuration status-buffer
|
||||||
((glyph-mode-presentation-p t)
|
((glyph-mode-presentation-p t)
|
||||||
|
@ -46,6 +48,7 @@
|
||||||
'("crates" "https://crates.io/search?q=~a" "https://crates.io/")
|
'("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")
|
'("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/")
|
'("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/")
|
'("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")
|
'("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/")
|
'("github" "https://github.com/search?utf8=✓&q=~a&type=repositories" "https://github.com/")
|
||||||
|
@ -58,8 +61,7 @@
|
||||||
(define-configuration context-buffer
|
(define-configuration context-buffer
|
||||||
"Go through the search engines above and make-search-engine out of them."
|
"Go through the search engines above and make-search-engine out of them."
|
||||||
((search-engines
|
((search-engines
|
||||||
(mapcar (lambda (engine) (apply 'make-search-engine engine))
|
(mapcar (lambda (engine) (apply 'make-search-engine engine)) *my-search-engines*))))
|
||||||
*my-search-engines*))))
|
|
||||||
|
|
||||||
(define-configuration browser
|
(define-configuration browser
|
||||||
((restore-session-on-startup-p nil)))
|
((restore-session-on-startup-p t)))
|
||||||
|
|
|
@ -18,33 +18,32 @@
|
||||||
;; Define custom theme
|
;; Define custom theme
|
||||||
(define-configuration browser
|
(define-configuration browser
|
||||||
((theme (make-instance 'theme:theme
|
((theme (make-instance 'theme:theme
|
||||||
:dark-p ${if variant == "light" then "nil" else "t"}
|
|
||||||
:font-family "${fonts.sansSerif.name}"
|
:font-family "${fonts.sansSerif.name}"
|
||||||
:monospace-font-family "${fonts.monospace.name}"
|
:monospace-font-family "${fonts.monospace.name}"
|
||||||
:text-color "${scheme.base05}"
|
:text-color "${scheme.base05}"
|
||||||
:contrast-text-color "${scheme.base01}"
|
:contrast-text-color "${scheme.base01}"
|
||||||
:background-color "${scheme.base00}"
|
:background-color "${scheme.base00}"
|
||||||
:primary-color "${scheme.base02}"
|
:primary-color "${scheme.base04}"
|
||||||
:secondary-color "${scheme.base03}"
|
:secondary-color "${scheme.base03}"
|
||||||
:tertiary-color "${scheme.base04}"
|
:tertiary-color "${scheme.base02}"
|
||||||
:quaternary-color "${scheme.base04}"
|
:quaternary-color "${scheme.base02}"
|
||||||
:accent-color "${scheme.base0E}"
|
:accent-color "${accent}"
|
||||||
:action-color "${scheme.cyan}"
|
:action-color "${scheme.cyan}"
|
||||||
:success-color "${scheme.green}"
|
:success-color "${scheme.green}"
|
||||||
:warning-color "${scheme.yellow}"
|
:warning-color "${scheme.yellow}"
|
||||||
:highlight-color "${scheme.base01}"
|
:highlight-color "${scheme.base04}"
|
||||||
:codeblock-color "${scheme.base01}"
|
:codeblock-color "${scheme.base01}"
|
||||||
;; :on-background-color "${scheme.base05}"
|
:on-background-color "${scheme.base05}"
|
||||||
;; :on-primary-color "${scheme.base05}"
|
:on-primary-color "${scheme.base00}"
|
||||||
;; :on-secondary-color "${scheme.base05}"
|
:on-secondary-color "${scheme.base01}"
|
||||||
;; :on-tertiary-color "${scheme.base05}"
|
:on-tertiary-color "${scheme.base04}"
|
||||||
;; :on-quaternary-color "${scheme.base05}"
|
:on-quaternary-color "${scheme.base04}"
|
||||||
;; :on-accent-color "${scheme.base01}"
|
:on-accent-color "${scheme.base01}"
|
||||||
;; :on-action-color "${scheme.base01}"
|
:on-action-color "${scheme.base01}"
|
||||||
;; :on-success-color "${scheme.base01}"
|
:on-success-color "${scheme.base01}"
|
||||||
;; :on-warning-color "${scheme.base01}"
|
:on-warning-color "${scheme.base01}"
|
||||||
;; :on-highlight-color "${scheme.base01}"
|
:on-highlight-color "${scheme.base01}"
|
||||||
;; :on-codeblock-color "${scheme.base05}"
|
:on-codeblock-color "${scheme.base05}"
|
||||||
))))
|
))))
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -53,8 +52,8 @@
|
||||||
# Make a string of lisp-style list of strings, from nix-style
|
# Make a string of lisp-style list of strings, from nix-style
|
||||||
# list
|
# list
|
||||||
convertTags = tags: "(" + (builtins.foldl' (x: y: x + " \"" + y + "\"") "" tags) + " )";
|
convertTags = tags: "(" + (builtins.foldl' (x: y: x + " \"" + y + "\"") "" tags) + " )";
|
||||||
# Take bookmarks as returned from JSON file and convert to NYXT
|
# Take bookmarks as returned from JSON file and convert to
|
||||||
# expected format
|
# NYXT expected format
|
||||||
convertBookmark =
|
convertBookmark =
|
||||||
{
|
{
|
||||||
name,
|
name,
|
||||||
|
@ -64,10 +63,10 @@
|
||||||
"(:url \"${url}\" :title \"${name}\" :tags ${convertTags tags})\n";
|
"(:url \"${url}\" :title \"${name}\" :tags ${convertTags tags})\n";
|
||||||
in
|
in
|
||||||
(
|
(
|
||||||
# Fold all entries in bookmarks.json into single string of NYXT
|
# Fold all entries in bookmarks.json into single string of
|
||||||
# format bookmarks, each entry on a new line and with 2 space
|
# NYXT format bookmarks, each entry on a new line and with 2
|
||||||
# indentation, just for visual clarity if reading the outputted
|
# space indentation, just for visual clarity if reading the
|
||||||
# file
|
# outputted file
|
||||||
"(\n"
|
"(\n"
|
||||||
+ (builtins.foldl' (x: y: x + " " + convertBookmark y) "" (
|
+ (builtins.foldl' (x: y: x + " " + convertBookmark y) "" (
|
||||||
builtins.fromJSON (builtins.readFile ./bookmarks.json)
|
builtins.fromJSON (builtins.readFile ./bookmarks.json)
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
@ -12,13 +10,7 @@
|
||||||
../texlive/default.nix
|
../texlive/default.nix
|
||||||
../programming/default.nix
|
../programming/default.nix
|
||||||
];
|
];
|
||||||
services.emacs = {
|
home.sessionVariables.EDITOR = "emacs";
|
||||||
enable = lib.mkDefault true;
|
|
||||||
package = config.programs.emacs.finalPackage;
|
|
||||||
defaultEditor = true;
|
|
||||||
client.enable = true;
|
|
||||||
socketActivation.enable = true;
|
|
||||||
};
|
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.emacs30.override {
|
package = pkgs.emacs30.override {
|
||||||
|
@ -37,5 +29,7 @@
|
||||||
mupdf-headless
|
mupdf-headless
|
||||||
poppler_utils
|
poppler_utils
|
||||||
graphviz-nox
|
graphviz-nox
|
||||||
|
|
||||||
|
toolbox
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,11 +4,12 @@ with epkgs;
|
||||||
# EViL Mode
|
# EViL Mode
|
||||||
evil
|
evil
|
||||||
# UI and Appearance
|
# UI and Appearance
|
||||||
delight
|
|
||||||
nerd-icons
|
nerd-icons
|
||||||
nerd-icons-dired
|
nerd-icons-dired
|
||||||
nerd-icons-ibuffer
|
nerd-icons-ibuffer
|
||||||
nerd-icons-corfu
|
nerd-icons-corfu
|
||||||
|
doom-modeline
|
||||||
|
visual-fill-column
|
||||||
# Email and Calendar
|
# Email and Calendar
|
||||||
khalel
|
khalel
|
||||||
mu4e
|
mu4e
|
||||||
|
@ -25,7 +26,6 @@ with epkgs;
|
||||||
corfu-terminal
|
corfu-terminal
|
||||||
cape
|
cape
|
||||||
consult
|
consult
|
||||||
consult-eglot
|
|
||||||
tempel
|
tempel
|
||||||
tempel-collection
|
tempel-collection
|
||||||
rainbow-delimiters
|
rainbow-delimiters
|
||||||
|
@ -34,18 +34,15 @@ with epkgs;
|
||||||
treesit-auto
|
treesit-auto
|
||||||
apheleia
|
apheleia
|
||||||
flymake-shellcheck
|
flymake-shellcheck
|
||||||
flymake-yamllint
|
|
||||||
flymake-clippy
|
flymake-clippy
|
||||||
flymake-eslint
|
|
||||||
magit
|
magit
|
||||||
forge
|
|
||||||
nix-mode
|
nix-mode
|
||||||
julia-mode
|
nix-ts-mode
|
||||||
julia-ts-mode
|
nushell-ts-mode
|
||||||
python-docstring
|
python-docstring
|
||||||
python-pytest
|
python-pytest
|
||||||
|
engrave-faces
|
||||||
auctex
|
auctex
|
||||||
markdown-mode
|
markdown-mode
|
||||||
pandoc-mode
|
|
||||||
scad-mode
|
scad-mode
|
||||||
]
|
]
|
||||||
|
|
|
@ -248,21 +248,21 @@
|
||||||
"pin, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
"pin, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||||
"dimaround, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
"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"
|
"stayfocused, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
|
||||||
# Audio control panel
|
# PulseAudio, Network and Bluetooth control panels
|
||||||
"float, pavucontrol"
|
"float, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||||
"size 800 600, pavucontrol"
|
"size 800 600, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||||
"move onscreen 100%-820 50,pavucontrol"
|
"move onscreen 50 100%-615,pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
||||||
# File browser and picker dialog
|
# File picker dialog
|
||||||
"float, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
"float, xdg-desktop-portal-gtk"
|
||||||
"size 800 600, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
"size 800 600, xdg-desktop-portal-gtk"
|
||||||
"center, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
"center, xdg-desktop-portal-gtk"
|
||||||
# Matplotlib plots
|
# Matplotlib plots
|
||||||
"float, Matplotlib"
|
"float, Matplotlib"
|
||||||
|
|
||||||
# Workspace rules
|
# Workspace rules
|
||||||
"workspace 2, (firefox)" # Browser
|
"workspace 2, (firefox)" # Browser
|
||||||
"workspace 3, (signal|whatsapp-for-linux|WebCord|teams-for-linux|twinkle)" # Messaging
|
"workspace 3, (signal|WebCord|teams-for-linux|twinkle)" # Messaging
|
||||||
"workspace 4, (libreoffice|soffice)(.*)" # Documents
|
"workspace 4, (Zotero|libreoffice|soffice|org.musicbrainz.Picard)(.*)" # Files
|
||||||
"workspace 5, (Nxplayer.bin)" # Remote Desktop
|
"workspace 5, (Nxplayer.bin)" # Remote Desktop
|
||||||
"workspace 6, (PrusaSlicer)" # 3D Printing
|
"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
|
"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"
|
"center, title:Library,class:firefox"
|
||||||
"pin, title:Picture-in-Picture,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
|
# Electron file picker dialog
|
||||||
"float, title:Open Files,class:electron"
|
"float, title:Open Files,class:electron"
|
||||||
"size 800 600, title:Open Files,class:electron"
|
"size 800 600, title:Open Files,class:electron"
|
||||||
"center, 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
|
# Inhibit idle when watching videos
|
||||||
"idleinhibit fullscreen, class:firefox|com.github.rafostar.Clapper"
|
"idleinhibit fullscreen, class:firefox|com.github.rafostar.Clapper"
|
||||||
|
|
||||||
|
@ -327,7 +328,7 @@
|
||||||
++ [
|
++ [
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
# Open Hyprland wiki at correct version number
|
# 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, F1, exec, ${config.programs.hyprlock.package}/bin/hyprlock"
|
||||||
"SUPER, P, exec, ${config.programs.wlogout.package}/bin/wlogout"
|
"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"
|
"SUPER SHIFT, Z, exec, exec ${config.services.mako.package}/bin/makoctl dismiss -a"
|
||||||
|
|
||||||
# Common program shortcuts
|
# Common program shortcuts
|
||||||
"SUPER, Space, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
"SUPER, D, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
||||||
"SUPER, Return, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
"SUPER, C, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
||||||
"SUPER SHIFT, Return, exec, ${config.programs.emacs.finalPackage}/bin/emacsclient -c"
|
"SUPER, E, exec, ${config.programs.emacs.finalPackage}/bin/emacs"
|
||||||
"SUPER, W, exec, ${pkgs.nyxt}/bin/nyxt --no-socket"
|
"SUPER, W, exec, ${config.programs.firefox.finalPackage}/bin/firefox"
|
||||||
"SUPER, F, exec, ${pkgs.nautilus}/bin/nautilus"
|
"SUPER, F, exec, thunar"
|
||||||
|
|
||||||
# Misc useful binds
|
# Misc useful binds
|
||||||
",Print,exec,${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"
|
",Print,exec,${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"
|
||||||
|
|
|
@ -1,23 +1,46 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
home.packages =
|
||||||
./python/default.nix
|
let
|
||||||
./lua/default.nix
|
pythonEnv = (
|
||||||
];
|
pkgs.python312.withPackages (
|
||||||
home.packages = with pkgs; [
|
ps: with ps; [
|
||||||
## Linters
|
ipython
|
||||||
shellcheck
|
python-lsp-server
|
||||||
yamllint
|
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
|
## Linters
|
||||||
nixfmt-rfc-style
|
shellcheck
|
||||||
shfmt
|
ruff
|
||||||
nodePackages.prettier
|
|
||||||
nodePackages.prettier-plugin-toml
|
|
||||||
|
|
||||||
## Language servers
|
## Formatters
|
||||||
nixd
|
nixfmt-rfc-style
|
||||||
rust-analyzer
|
shfmt
|
||||||
nodePackages.typescript-language-server
|
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> { },
|
pkgs ? import <nixpkgs> { },
|
||||||
python3 ? pkgs.python3,
|
python3 ? pkgs.python3Full,
|
||||||
extraPackages ? with pkgs; [ uv ],
|
extraPackages ? [ ],
|
||||||
|
extraLibs ? [ ],
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (pkgs) lib;
|
inherit (pkgs) lib;
|
||||||
ldlibs = lib.makeLibraryPath (
|
ldlibs = lib.makeLibraryPath (
|
||||||
with pkgs;
|
(with pkgs; [
|
||||||
[
|
|
||||||
stdenv.cc.cc
|
stdenv.cc.cc
|
||||||
|
glib
|
||||||
glibc
|
glibc
|
||||||
zlib
|
zlib
|
||||||
zstd
|
zstd
|
||||||
]
|
])
|
||||||
|
++ extraLibs
|
||||||
);
|
);
|
||||||
pythonWrapped = pkgs.symlinkJoin {
|
pythonWrapped = pkgs.symlinkJoin {
|
||||||
name = "python";
|
name = "python";
|
||||||
|
@ -24,8 +26,12 @@ let
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
pkgs.mkShellNoCC {
|
pkgs.mkShellNoCC {
|
||||||
packages = [ pythonWrapped ] ++ extraPackages;
|
packages = [
|
||||||
|
pythonWrapped
|
||||||
|
pkgs.uv
|
||||||
|
] ++ extraPackages;
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
|
[ ! -d .venv ] && ${pythonWrapped}/bin/python3 -m venv .venv
|
||||||
[ -f .venv/bin/activate ] && source .venv/bin/activate
|
[ -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"
|
USER="pixelifytica^forge"
|
||||||
secret-tool clear host "$HOST" user "$USER"
|
secret-tool clear host "$HOST" user "$USER"
|
||||||
pass show "api/$HOST" | head -n1 | secret-tool store --label="Forge GitHub Token" 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=("$@")
|
HOSTS=("$@")
|
||||||
# Config files
|
# 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"
|
SOURCE="$HOME/$TARGET"
|
||||||
echo "--- $SOURCE ---"
|
echo "--- $SOURCE ---"
|
||||||
TMP_TARGET=/tmp/rsync-local-config
|
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 common directories, setting url to ensure it's up-to-date first
|
||||||
SYNC_DIRS=(
|
SYNC_DIRS=(
|
||||||
"$HOME/.password-store/"
|
"$HOME/.password-store/"
|
||||||
"$HOME/Documents/org/"
|
"$HOME/Documents/org/"
|
||||||
"$HOME/Documents/library/"
|
"$HOME/Documents/notebooks/"
|
||||||
)
|
)
|
||||||
SYNC_URLS=(
|
SYNC_URLS=(
|
||||||
"https://git.xenia.me.uk/pixelifytica/pass.git"
|
"https://git.xenia.me.uk/pixelifytica/pass.git"
|
||||||
"https://git.xenia.me.uk/pixelifytica/org.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
|
for i in "${!SYNC_DIRS[@]}"; do
|
||||||
|
@ -29,17 +43,3 @@ for i in "${!SYNC_DIRS[@]}"; do
|
||||||
git status --porcelain
|
git status --porcelain
|
||||||
)
|
)
|
||||||
done
|
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
|
./git.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./starship.nix
|
./starship.nix
|
||||||
./extras.nix
|
|
||||||
];
|
];
|
||||||
home.shellAliases = {
|
home = {
|
||||||
sync-all = "sync-git; vdirsyncer sync; mbsync -a";
|
packages = with pkgs; [
|
||||||
sync-and-shutdown = "sync-all && shutdown now";
|
asciiquarium-transparent
|
||||||
protonup = "sudo wg-quick up protonvpn && sudo wg";
|
pipes
|
||||||
protondown = "sudo wg-quick down protonvpn";
|
cbonsai
|
||||||
|
];
|
||||||
|
shellAliases = {
|
||||||
|
sync-all = "sync-git; vdirsyncer sync; mbsync -a";
|
||||||
|
sync-and-shutdown = "sync-all && shutdown now";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
programs = {
|
programs = {
|
||||||
# Shells
|
# Shells
|
||||||
bash.enable = true;
|
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
|
# CLI programs and utilities
|
||||||
btop.enable = true;
|
btop.enable = true;
|
||||||
carapace.enable = true;
|
carapace.enable = true;
|
||||||
|
@ -63,7 +101,9 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultCommand = "${pkgs.fd}/bin/fd --type f";
|
defaultCommand = "${pkgs.fd}/bin/fd --type f";
|
||||||
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
|
||||||
|
changeDirWidgetOptions = [ "--preview '${pkgs.tree}/bin/tree -C {} | head -200'" ];
|
||||||
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
|
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
|
||||||
|
fileWidgetOptions = [ "--preview '${pkgs.bat}/bin/bat -f {}'" ];
|
||||||
colors = {
|
colors = {
|
||||||
bg = lib.mkForce "-1";
|
bg = lib.mkForce "-1";
|
||||||
"bg+" = lib.mkForce "-1";
|
"bg+" = lib.mkForce "-1";
|
||||||
|
@ -71,8 +111,8 @@
|
||||||
};
|
};
|
||||||
hyfetch = {
|
hyfetch = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = rec {
|
||||||
preset = "pansexual";
|
preset = if light_dark == "dark" then "transgender" else "rainbow";
|
||||||
mode = "rgb";
|
mode = "rgb";
|
||||||
light_dark = config.lib.stylix.scheme.variant;
|
light_dark = config.lib.stylix.scheme.variant;
|
||||||
lightness = 0.4;
|
lightness = 0.4;
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
asciiquarium-transparent
|
|
||||||
pipes
|
|
||||||
cbonsai
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -21,11 +21,7 @@
|
||||||
"git*".user = "git";
|
"git*".user = "git";
|
||||||
"legion" = {
|
"legion" = {
|
||||||
user = "pixelifytica";
|
user = "pixelifytica";
|
||||||
hostname = "192.168.0.31";
|
hostname = "192.168.1.225";
|
||||||
};
|
|
||||||
"vanguard" = {
|
|
||||||
user = "pixelifytica";
|
|
||||||
hostname = "192.168.0.90";
|
|
||||||
};
|
};
|
||||||
"ionos" = {
|
"ionos" = {
|
||||||
user = "root";
|
user = "root";
|
||||||
|
|
|
@ -5,18 +5,11 @@
|
||||||
enableTransience = true;
|
enableTransience = true;
|
||||||
settings = {
|
settings = {
|
||||||
add_newline = false;
|
add_newline = false;
|
||||||
aws.symbol = " ";
|
|
||||||
buf.symbol = " ";
|
|
||||||
c.symbol = " ";
|
|
||||||
character = {
|
character = {
|
||||||
success_symbol = "[>](bold green)";
|
success_symbol = "[λ](bold green)";
|
||||||
error_symbol = "[>](bold red)";
|
error_symbol = "[λ](bold red)";
|
||||||
};
|
};
|
||||||
command_timeout = 2000;
|
command_timeout = 2000;
|
||||||
conda.symbol = " ";
|
|
||||||
container.symbol = " ";
|
|
||||||
crystal.symbol = " ";
|
|
||||||
dart.symbol = " ";
|
|
||||||
directory = {
|
directory = {
|
||||||
read_only = " ";
|
read_only = " ";
|
||||||
truncation_length = 2;
|
truncation_length = 2;
|
||||||
|
@ -24,10 +17,6 @@
|
||||||
truncate_to_repo = false;
|
truncate_to_repo = false;
|
||||||
};
|
};
|
||||||
direnv.disabled = false;
|
direnv.disabled = false;
|
||||||
docker_context.symbol = " ";
|
|
||||||
elixir.symbol = " ";
|
|
||||||
elm.symbol = " ";
|
|
||||||
fennel.symbol = " ";
|
|
||||||
fossil_branch.symbol = " ";
|
fossil_branch.symbol = " ";
|
||||||
git_branch = {
|
git_branch = {
|
||||||
symbol = " ";
|
symbol = " ";
|
||||||
|
@ -57,96 +46,20 @@
|
||||||
untracked = " ";
|
untracked = " ";
|
||||||
typechanged = " ";
|
typechanged = " ";
|
||||||
};
|
};
|
||||||
golang.symbol = " ";
|
|
||||||
guix_shell.symbol = " ";
|
|
||||||
haskell.symbol = " ";
|
|
||||||
haxe.symbol = " ";
|
|
||||||
hg_branch.symbol = " ";
|
hg_branch.symbol = " ";
|
||||||
hostname = {
|
hostname.ssh_symbol = " ";
|
||||||
ssh_only = false;
|
|
||||||
ssh_symbol = " ";
|
|
||||||
};
|
|
||||||
java.symbol = " ";
|
|
||||||
jobs.symbol = " ";
|
jobs.symbol = " ";
|
||||||
julia.symbol = " ";
|
|
||||||
kotlin.symbol = " ";
|
|
||||||
line_break.disabled = false;
|
line_break.disabled = false;
|
||||||
localip.disabled = false;
|
memory_usage.disabled = false;
|
||||||
lua.symbol = " ";
|
|
||||||
memory_usage = {
|
|
||||||
disabled = false;
|
|
||||||
symbol = " ";
|
|
||||||
};
|
|
||||||
meson.symbol = " ";
|
|
||||||
nim.symbol = " ";
|
|
||||||
nix_shell.symbol = " ";
|
|
||||||
nodejs.symbol = " ";
|
|
||||||
ocaml.symbol = " ";
|
|
||||||
os = {
|
os = {
|
||||||
disabled = false;
|
disabled = false;
|
||||||
format = "on [$symbol]($style) ";
|
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 = " ";
|
python.python_binary = "python3";
|
||||||
perl.symbol = " ";
|
|
||||||
php.symbol = " ";
|
|
||||||
pijul_channel.symbol = " ";
|
|
||||||
python = {
|
|
||||||
python_binary = "python3";
|
|
||||||
symbol = " ";
|
|
||||||
};
|
|
||||||
rlang.symbol = " ";
|
|
||||||
ruby.symbol = " ";
|
|
||||||
rust.symbol = " ";
|
|
||||||
scala.symbol = " ";
|
|
||||||
shell = {
|
shell = {
|
||||||
disabled = false;
|
disabled = false;
|
||||||
format = "using [$indicator]($style) ";
|
format = "using [$indicator]($style) ";
|
||||||
nu_indicator = "ν";
|
nu_indicator = "ν";
|
||||||
bash_indicator = "";
|
|
||||||
powershell_indicator = "";
|
|
||||||
cmd_indicator = "";
|
|
||||||
unknown_indicator = "";
|
|
||||||
};
|
};
|
||||||
status = {
|
status = {
|
||||||
disabled = false;
|
disabled = false;
|
||||||
|
@ -159,12 +72,7 @@
|
||||||
sigint_symbol = " ";
|
sigint_symbol = " ";
|
||||||
signal_symbol = " ";
|
signal_symbol = " ";
|
||||||
};
|
};
|
||||||
sudo = {
|
sudo.disabled = false;
|
||||||
disabled = false;
|
|
||||||
symbol = " ";
|
|
||||||
};
|
|
||||||
swift.symbol = " ";
|
|
||||||
zig.symbol = " ";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
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 ];
|
imports = [ ./default.nix ];
|
||||||
systemd.user = {
|
systemd.user = {
|
||||||
services.dynamic-wallpaper = {
|
services.dynamic-wallpaper = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Change wallpaper based on time of day";
|
Description = "Change wallpaper based on time of day";
|
||||||
Wants = [ "swww-daemon.service" ];
|
Wants = [ "swww-daemon.service" ];
|
||||||
After = [ "swww-daemon.service" ];
|
After = [ "swww-daemon.service" ];
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart = "${dynamicWallpaper}/bin/dynamic-wallpaper";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${dynamicWallpaper}/bin/dynamic-wallpaper";
|
||||||
|
};
|
||||||
|
};
|
||||||
timers.dynamic-wallpaper.Timer = {
|
timers.dynamic-wallpaper.Timer = {
|
||||||
OnCalendar = "*:0";
|
OnCalendar = "*:0";
|
||||||
Unit = "dynamic-wallpaper.service";
|
Unit = "dynamic-wallpaper.service";
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./alacritty.nix ];
|
|
||||||
}
|
|
|
@ -2,18 +2,7 @@
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
(texlive.combine {
|
(texlive.combine {
|
||||||
inherit (texlive)
|
inherit (texlive) scheme-full;
|
||||||
scheme-medium
|
|
||||||
dvisvgm
|
|
||||||
dvipng
|
|
||||||
wrapfig
|
|
||||||
amsmath
|
|
||||||
ulem
|
|
||||||
hyperref
|
|
||||||
capt-of
|
|
||||||
listings
|
|
||||||
bera
|
|
||||||
;
|
|
||||||
latex-beamer-ukaea.pkgs = [ (callPackage ./latex-beamer-ukaea/default.nix { }) ];
|
latex-beamer-ukaea.pkgs = [ (callPackage ./latex-beamer-ukaea/default.nix { }) ];
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
|
@ -10,270 +10,254 @@
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
settings.main =
|
settings.main = {
|
||||||
let
|
name = "main";
|
||||||
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
|
layer = "top";
|
||||||
in
|
position = "left";
|
||||||
{
|
# Layout
|
||||||
name = "main";
|
"modules-left" = [
|
||||||
layer = "top";
|
"hyprland/workspaces"
|
||||||
position = "left";
|
"mpris"
|
||||||
# Layout
|
];
|
||||||
"modules-left" = [
|
"modules-center" = [ ];
|
||||||
"hyprland/workspaces"
|
"modules-right" = [
|
||||||
"mpris"
|
"custom/notification"
|
||||||
];
|
"pulseaudio#source"
|
||||||
"modules-center" = [ ];
|
"pulseaudio#sink"
|
||||||
"modules-right" = [
|
"network"
|
||||||
"custom/notification"
|
"bluetooth"
|
||||||
"pulseaudio"
|
"custom/calendar-icon"
|
||||||
"network"
|
"clock#calendar"
|
||||||
"bluetooth"
|
"custom/clock-icon"
|
||||||
"clock#calendar"
|
"clock"
|
||||||
"clock"
|
"backlight"
|
||||||
"backlight"
|
"battery"
|
||||||
"battery"
|
"custom/weather"
|
||||||
"custom/weather"
|
"systemd-failed-units"
|
||||||
"systemd-failed-units"
|
"tray"
|
||||||
"tray"
|
];
|
||||||
];
|
# Module config
|
||||||
# Module config
|
"hyprland/workspaces" = {
|
||||||
"hyprland/workspaces" = {
|
format = "{icon}";
|
||||||
format = "{icon}";
|
format-icons = {
|
||||||
format-icons = {
|
"1" = "";
|
||||||
"1" = "";
|
"2" = "";
|
||||||
"2" = "";
|
"3" = "";
|
||||||
"3" = "";
|
"4" = "";
|
||||||
"4" = "";
|
"5" = "";
|
||||||
"5" = "";
|
"6" = "";
|
||||||
"6" = "";
|
"7" = "";
|
||||||
"7" = "";
|
default = "";
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
all-outputs = false;
|
|
||||||
persistent-workspaces = {
|
|
||||||
"1" = [ ];
|
|
||||||
"2" = [ ];
|
|
||||||
"3" = [ ];
|
|
||||||
"4" = [ ];
|
|
||||||
"5" = [ ];
|
|
||||||
"6" = [ ];
|
|
||||||
"7" = [ ];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
"hyprland/window" = {
|
all-outputs = false;
|
||||||
"format" = "{title}";
|
persistent-workspaces = {
|
||||||
"max-length" = 50;
|
"1" = [ ];
|
||||||
"rewrite" = {
|
"2" = [ ];
|
||||||
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
|
"3" = [ ];
|
||||||
"(alacritty.*)" = " $1";
|
"4" = [ ];
|
||||||
"(.*) - mpv" = " $1";
|
"5" = [ ];
|
||||||
"swayimg: (.*)" = " $1";
|
"6" = [ ];
|
||||||
"swappy" = " swappy";
|
"7" = [ ];
|
||||||
"(?:/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;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
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 =
|
style =
|
||||||
let
|
let
|
||||||
scheme = config.lib.stylix.scheme.withHashtag;
|
scheme = config.lib.stylix.scheme.withHashtag;
|
||||||
|
@ -283,7 +267,7 @@
|
||||||
* {
|
* {
|
||||||
all: unset;
|
all: unset;
|
||||||
font-family: ${config.stylix.fonts.monospace.name};
|
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 {
|
window {
|
||||||
|
@ -316,22 +300,6 @@
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces,
|
|
||||||
#window,
|
|
||||||
#mpris,
|
|
||||||
#custom-notification,
|
|
||||||
#pulseaudio,
|
|
||||||
#network,
|
|
||||||
#bluetooth,
|
|
||||||
#clock,
|
|
||||||
#backlight,
|
|
||||||
#battery,
|
|
||||||
#custom-weather,
|
|
||||||
#tray {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 2px 4px 2px 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces {
|
#workspaces {
|
||||||
background: ${scheme.base00};
|
background: ${scheme.base00};
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
@ -339,9 +307,6 @@
|
||||||
padding: 2px 3px;
|
padding: 2px 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
padding: 2px 5px 2px 1px;
|
|
||||||
}
|
|
||||||
#workspaces button.empty {
|
#workspaces button.empty {
|
||||||
color: ${scheme.base03};
|
color: ${scheme.base03};
|
||||||
}
|
}
|
||||||
|
@ -359,31 +324,30 @@
|
||||||
#custom-notification {
|
#custom-notification {
|
||||||
color: ${scheme.base08};
|
color: ${scheme.base08};
|
||||||
}
|
}
|
||||||
#pulseaudio {
|
#pulseaudio.source {
|
||||||
color: ${scheme.base09};
|
color: ${scheme.base09};
|
||||||
}
|
}
|
||||||
#network {
|
#pulseaudio.sink {
|
||||||
color: ${scheme.base0A};
|
color: ${scheme.base0A};
|
||||||
padding: 2px 6px 2px 1px;
|
|
||||||
}
|
}
|
||||||
#bluetooth {
|
#network {
|
||||||
color: ${scheme.base0B};
|
color: ${scheme.base0B};
|
||||||
}
|
}
|
||||||
#clock.calendar {
|
#bluetooth {
|
||||||
color: ${scheme.base0C};
|
color: ${scheme.base0C};
|
||||||
padding: 2px 3px 2px 3px;
|
|
||||||
}
|
}
|
||||||
#clock {
|
#custom-calendar-icon,
|
||||||
|
#clock.calendar {
|
||||||
color: ${scheme.base0D};
|
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 {
|
#battery.warning {
|
||||||
color: ${scheme.base09};
|
color: ${scheme.base09};
|
||||||
}
|
}
|
||||||
|
@ -395,9 +359,6 @@
|
||||||
color: ${scheme.base0B};
|
color: ${scheme.base0B};
|
||||||
}
|
}
|
||||||
|
|
||||||
#systemd-failed-units {
|
|
||||||
padding: 2px 4px 2px 1px;
|
|
||||||
}
|
|
||||||
#systemd-failed-units.ok {
|
#systemd-failed-units.ok {
|
||||||
color: ${scheme.base0B}
|
color: ${scheme.base0B}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,14 @@
|
||||||
)
|
)
|
||||||
|
|
||||||
(defalias
|
(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)
|
a (tap-hold $tap-time $hold-time a lmet)
|
||||||
s (tap-hold $tap-time $hold-time s lalt)
|
s (tap-hold $tap-time $hold-time s lsft)
|
||||||
d (tap-hold $tap-time $hold-time d lctl)
|
d (tap-hold $tap-time $hold-time d lalt)
|
||||||
f (tap-hold $tap-time $hold-time f lsft)
|
f (tap-hold $tap-time $hold-time f lctl)
|
||||||
j (tap-hold $tap-time $hold-time j lsft)
|
j (tap-hold $tap-time $hold-time j lctl)
|
||||||
k (tap-hold $tap-time $hold-time k lctl)
|
k (tap-hold $tap-time $hold-time k lalt)
|
||||||
l (tap-hold $tap-time $hold-time l lalt)
|
l (tap-hold $tap-time $hold-time l lsft)
|
||||||
; (tap-hold $tap-time $hold-time ; lmet)
|
; (tap-hold $tap-time $hold-time ; lmet)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
let
|
let
|
||||||
emacs = [ "emacsclient.desktop" ];
|
emacs = [ "emacs.desktop" ];
|
||||||
browser = [ "firefox.desktop" ];
|
browser = [ "firefox.desktop" ];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
"inode/directory" = [ "org.xfce.thunar.desktop" ];
|
||||||
"inode/symlink" = [ "org.gnome.Nautilus.desktop" ];
|
"inode/symlink" = [ "org.xfce.thunar.desktop" ];
|
||||||
|
|
||||||
"image/jpeg" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
"image/jpeg" = [ "com.xfce.ristretto.desktop" ];
|
||||||
"image/png" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
"image/png" = [ "com.xfce.ristretto.desktop" ];
|
||||||
"audio/mpeg" = [ "com.github.neithern.g4music.desktop" ];
|
"audio/mpeg" = [ "com.github.neithern.g4music.desktop" ];
|
||||||
"video/mp4" = [ "com.github.rafostar.Clapper.desktop" ];
|
"video/mp4" = [ "mpv.desktop" ];
|
||||||
|
|
||||||
"text/plain" = emacs;
|
"text/plain" = emacs;
|
||||||
"text/richtext" = emacs;
|
"text/richtext" = emacs;
|
||||||
|
@ -64,7 +64,7 @@ in
|
||||||
"x-scheme-handler/chrome" = browser;
|
"x-scheme-handler/chrome" = browser;
|
||||||
"x-scheme-handler/webcal" = browser;
|
"x-scheme-handler/webcal" = browser;
|
||||||
"x-scheme-handler/geo" = [ "openstreetmap-geo-handler.desktop" ];
|
"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/unknown" = emacs;
|
||||||
|
|
||||||
"x-scheme-handler/prusaslicer" = [ "PrusaSlicerURLProtocol.desktop" ];
|
"x-scheme-handler/prusaslicer" = [ "PrusaSlicerURLProtocol.desktop" ];
|
||||||
|
@ -72,7 +72,4 @@ in
|
||||||
"x-scheme-handler/ms-word" = [ "writer.desktop" ];
|
"x-scheme-handler/ms-word" = [ "writer.desktop" ];
|
||||||
"x-scheme-handler/ms-powerpoint" = [ "impress.desktop" ];
|
"x-scheme-handler/ms-powerpoint" = [ "impress.desktop" ];
|
||||||
"x-scheme-handler/ms-excel" = [ "calc.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 ];
|
imports = [ ./caddy.nix ];
|
||||||
services = {
|
services = {
|
||||||
|
@ -23,16 +23,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# gitea-actions-runner = {
|
caddy.virtualHosts."git.xenia.me.uk".extraConfig =
|
||||||
# package = pkgs.forgejo-runner;
|
let
|
||||||
# instances.default = {
|
port = config.services.forgejo.settings.server.HTTP_PORT;
|
||||||
# enable = true;
|
in
|
||||||
# name = "monolith";
|
"reverse_proxy http://localhost:${toString port}";
|
||||||
# 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";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
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 ];
|
environment.systemPackages = with pkgs; [ twinkle ];
|
||||||
home-manager.users.${username} =
|
home-manager.users.${username} =
|
||||||
{ config, ... }:
|
{ config, ... }:
|
||||||
{
|
{
|
||||||
imports = [ ./home/openfortivpn/ukaea.nix ];
|
imports = [ ./home/openfortivpn/ukaea.nix ];
|
||||||
programs = {
|
programs.git.userEmail = config.accounts.email.accounts.outlook.address;
|
||||||
git.userEmail = config.accounts.email.accounts.outlook.address;
|
|
||||||
firefox.profiles.user.settings."browser.startup.homepage" = "https://nucleus.ukaea.uk";
|
|
||||||
};
|
|
||||||
accounts.email.accounts = {
|
accounts.email.accounts = {
|
||||||
proton.primary = lib.mkForce false;
|
proton.primary = lib.mkForce false;
|
||||||
outlook.primary = lib.mkForce true;
|
outlook.primary = lib.mkForce true;
|
||||||
|
|
Loading…
Reference in a new issue