Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
Evie Litherland-Smith | 2532939134 |
5
.pre-commit-config.yaml
Normal file
5
.pre-commit-config.yaml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/gitleaks/gitleaks
|
||||||
|
rev: v8.18.4
|
||||||
|
hooks:
|
||||||
|
- id: gitleaks
|
8
Makefile
8
Makefile
|
@ -7,12 +7,10 @@ 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
|
||||||
|
|
||||||
fonts:
|
server:
|
||||||
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 && rm ./result
|
nix copy ./result --to ssh://legion
|
||||||
|
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,59 +119,6 @@
|
||||||
"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": {
|
||||||
|
@ -212,11 +159,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736061677,
|
"lastModified": 1735141468,
|
||||||
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
|
"narHash": "sha256-VIAjBr1qGcEbmhLwQJD6TABppPMggzOvqFsqkDoMsAY=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
|
"rev": "4005c3ff7505313cbc21081776ad0ce5dfd7a3ce",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -228,11 +175,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1735554305,
|
"lastModified": 1733097829,
|
||||||
"narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
|
"narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
|
"rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -258,7 +205,6 @@
|
||||||
"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"
|
||||||
|
@ -272,11 +218,11 @@
|
||||||
"tinted-tmux": "tinted-tmux"
|
"tinted-tmux": "tinted-tmux"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736019457,
|
"lastModified": 1734110444,
|
||||||
"narHash": "sha256-MWe3RXEV9dov1wFZraWagVAxynPo/VceStIYfNRgqG4=",
|
"narHash": "sha256-fp1iV2JldCSvz+7ODzXYUkQ+H7zyiWw5E0MQ4ILC4vw=",
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "5204b085385c0bfaa1eb1bb0f8dc81922012128d",
|
"rev": "9015d5d0d5d100f849129c43d257b827d300b089",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -356,11 +302,11 @@
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736154270,
|
"lastModified": 1735135567,
|
||||||
"narHash": "sha256-p2r8xhQZ3TYIEKBoiEhllKWQqWNJNoT9v64Vmg4q8Zw=",
|
"narHash": "sha256-8T3K5amndEavxnludPyfj3Z1IkcFdRpR23q+T0BVeZE=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "13c913f5deb3a5c08bb810efd89dc8cb24dd968b",
|
"rev": "9e09d30a644c57257715902efbb3adc56c79cf28",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
15
flake.nix
15
flake.nix
|
@ -30,22 +30,9 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
treefmt = treefmt-nix.lib.evalModule nixpkgs.legacyPackages.x86_64-linux ./treefmt.nix;
|
||||||
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,10 +9,9 @@
|
||||||
./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,6 +5,5 @@
|
||||||
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,6 +9,7 @@
|
||||||
./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 = {
|
||||||
|
@ -62,7 +63,9 @@
|
||||||
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}"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -88,6 +91,5 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
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,12 +18,19 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nixVersions.latest;
|
package = pkgs.nixVersions.latest;
|
||||||
settings = {
|
settings = {
|
||||||
trusted-users = [ username ];
|
cores = 0;
|
||||||
|
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;
|
||||||
|
@ -32,6 +39,16 @@
|
||||||
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
|
||||||
|
@ -50,7 +67,7 @@
|
||||||
"nomachine-client"
|
"nomachine-client"
|
||||||
];
|
];
|
||||||
system.autoUpgrade = {
|
system.autoUpgrade = {
|
||||||
enable = false; # TEMP disable until server is back up
|
enable = true;
|
||||||
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}";
|
||||||
|
@ -93,7 +110,6 @@
|
||||||
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"
|
||||||
|
@ -118,7 +134,7 @@
|
||||||
imports = [
|
imports = [
|
||||||
./home/shell/default.nix
|
./home/shell/default.nix
|
||||||
./home/scripts/default.nix
|
./home/scripts/default.nix
|
||||||
./home/gpg/default.nix
|
./home/neovim/default.nix
|
||||||
];
|
];
|
||||||
home = {
|
home = {
|
||||||
inherit username;
|
inherit username;
|
||||||
|
@ -150,14 +166,12 @@
|
||||||
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 = {
|
||||||
|
@ -201,43 +215,30 @@
|
||||||
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 = 1.0;
|
applications = 0.9;
|
||||||
terminal = 0.8125; # 0x0.D
|
desktop = 0.7;
|
||||||
desktop = 0.75; # 0x0.C
|
popups = 0.5;
|
||||||
popups = 0.6875; # 0x0.B
|
terminal = 0.9;
|
||||||
};
|
};
|
||||||
cursor = {
|
cursor = {
|
||||||
package = pkgs.volantes-cursors;
|
package = pkgs.volantes-cursors;
|
||||||
name = "volantes_cursors";
|
name = "volantes_cursors";
|
||||||
size = 32;
|
size = 32;
|
||||||
};
|
};
|
||||||
fonts =
|
fonts = {
|
||||||
let
|
monospace = {
|
||||||
fpkgs = pkgs.callPackage ./fonts.nix { };
|
package = pkgs.nerdfonts.override { fonts = [ "DejaVuSansMono" ]; };
|
||||||
in
|
name = "DejaVuSansM Nerd Font";
|
||||||
{
|
|
||||||
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,10 +23,7 @@
|
||||||
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
|
||||||
|
@ -34,14 +31,19 @@
|
||||||
grim
|
grim
|
||||||
slurp
|
slurp
|
||||||
swappy
|
swappy
|
||||||
xfce.ristretto
|
nautilus
|
||||||
g4music
|
|
||||||
picard
|
|
||||||
zotero
|
|
||||||
evince
|
|
||||||
libreoffice
|
libreoffice
|
||||||
|
evince
|
||||||
|
image-roll
|
||||||
|
imagemagick
|
||||||
|
clapper
|
||||||
|
g4music
|
||||||
|
ffmpeg
|
||||||
|
picard
|
||||||
webcord
|
webcord
|
||||||
signal-desktop
|
signal-desktop
|
||||||
|
whatsapp-for-linux
|
||||||
|
teams-for-linux
|
||||||
nomachine-client
|
nomachine-client
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -58,36 +60,24 @@
|
||||||
};
|
};
|
||||||
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;
|
||||||
thunar = {
|
hyprland.enable = true;
|
||||||
enable = true;
|
xwayland.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;
|
||||||
blueman.enable = config.hardware.bluetooth.enable;
|
gnome.sushi.enable = true;
|
||||||
gvfs = {
|
gvfs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.gnome.gvfs;
|
package = pkgs.gnome.gvfs;
|
||||||
|
@ -121,6 +111,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
xkb.layout = "gb";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -137,21 +131,21 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./home/hyprland.nix
|
./home/hyprland.nix
|
||||||
./home/terminal.nix
|
./home/terminal/default.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 = false;
|
tray = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
gtk = {
|
gtk = {
|
||||||
|
@ -205,24 +199,44 @@
|
||||||
early_exit=false
|
early_exit=false
|
||||||
fill_shape=false
|
fill_shape=false
|
||||||
'';
|
'';
|
||||||
# Matplotlib default figure sizes and font settings
|
# WhatsApp config
|
||||||
"matplotlib/matplotlibrc".text =
|
"whatsapp-for-linux/settings.conf" =
|
||||||
let
|
let
|
||||||
inherit (config.stylix) fonts;
|
inherit (config.lib.stylix.scheme) variant;
|
||||||
in
|
in
|
||||||
''
|
{
|
||||||
font.family: sans-serif
|
force = true;
|
||||||
font.serif: ${fonts.serif.name}, DejaVu Serif
|
text = ''
|
||||||
font.sans-serif: ${fonts.sansSerif.name}, DejaVu Sans
|
[web]
|
||||||
font.monospace: ${fonts.monospace.name}, DejaVu Sans Mono
|
allow-permissions=true
|
||||||
figure.figsize: 8, 6
|
hw-accel=2
|
||||||
figure.dpi: 150
|
|
||||||
figure.autolayout: True
|
[general]
|
||||||
savefig.dpi: 300
|
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" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
# 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
139
system/fonts.nix
|
@ -1,139 +0,0 @@
|
||||||
{
|
|
||||||
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/rcalixte/awesome-wayland",
|
"url": "https://github.com/natpen/awesome-wayland",
|
||||||
"tags": ["Software", "Repositories"]
|
"tags": ["Software", "Repositories"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -89,11 +89,6 @@
|
||||||
"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,9 +2,7 @@
|
||||||
((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)
|
||||||
|
@ -48,7 +46,6 @@
|
||||||
'("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/")
|
||||||
|
@ -61,7 +58,8 @@
|
||||||
(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)) *my-search-engines*))))
|
(mapcar (lambda (engine) (apply 'make-search-engine engine))
|
||||||
|
*my-search-engines*))))
|
||||||
|
|
||||||
(define-configuration browser
|
(define-configuration browser
|
||||||
((restore-session-on-startup-p t)))
|
((restore-session-on-startup-p nil)))
|
||||||
|
|
|
@ -18,32 +18,33 @@
|
||||||
;; 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.base04}"
|
:primary-color "${scheme.base02}"
|
||||||
:secondary-color "${scheme.base03}"
|
:secondary-color "${scheme.base03}"
|
||||||
:tertiary-color "${scheme.base02}"
|
:tertiary-color "${scheme.base04}"
|
||||||
:quaternary-color "${scheme.base02}"
|
:quaternary-color "${scheme.base04}"
|
||||||
:accent-color "${accent}"
|
:accent-color "${scheme.base0E}"
|
||||||
: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.base04}"
|
:highlight-color "${scheme.base01}"
|
||||||
:codeblock-color "${scheme.base01}"
|
:codeblock-color "${scheme.base01}"
|
||||||
:on-background-color "${scheme.base05}"
|
;; :on-background-color "${scheme.base05}"
|
||||||
:on-primary-color "${scheme.base00}"
|
;; :on-primary-color "${scheme.base05}"
|
||||||
:on-secondary-color "${scheme.base01}"
|
;; :on-secondary-color "${scheme.base05}"
|
||||||
:on-tertiary-color "${scheme.base04}"
|
;; :on-tertiary-color "${scheme.base05}"
|
||||||
:on-quaternary-color "${scheme.base04}"
|
;; :on-quaternary-color "${scheme.base05}"
|
||||||
: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}"
|
||||||
))))
|
))))
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -52,8 +53,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
|
# Take bookmarks as returned from JSON file and convert to NYXT
|
||||||
# NYXT expected format
|
# expected format
|
||||||
convertBookmark =
|
convertBookmark =
|
||||||
{
|
{
|
||||||
name,
|
name,
|
||||||
|
@ -63,10 +64,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
|
# Fold all entries in bookmarks.json into single string of NYXT
|
||||||
# NYXT format bookmarks, each entry on a new line and with 2
|
# format bookmarks, each entry on a new line and with 2 space
|
||||||
# space indentation, just for visual clarity if reading the
|
# indentation, just for visual clarity if reading the outputted
|
||||||
# outputted file
|
# 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,4 +1,6 @@
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
@ -10,7 +12,13 @@
|
||||||
../texlive/default.nix
|
../texlive/default.nix
|
||||||
../programming/default.nix
|
../programming/default.nix
|
||||||
];
|
];
|
||||||
home.sessionVariables.EDITOR = "emacs";
|
services.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 {
|
||||||
|
@ -29,7 +37,5 @@
|
||||||
mupdf-headless
|
mupdf-headless
|
||||||
poppler_utils
|
poppler_utils
|
||||||
graphviz-nox
|
graphviz-nox
|
||||||
|
|
||||||
toolbox
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,11 @@ 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
|
||||||
|
@ -26,6 +25,7 @@ with epkgs;
|
||||||
corfu-terminal
|
corfu-terminal
|
||||||
cape
|
cape
|
||||||
consult
|
consult
|
||||||
|
consult-eglot
|
||||||
tempel
|
tempel
|
||||||
tempel-collection
|
tempel-collection
|
||||||
rainbow-delimiters
|
rainbow-delimiters
|
||||||
|
@ -34,15 +34,18 @@ 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
|
||||||
nix-ts-mode
|
julia-mode
|
||||||
nushell-ts-mode
|
julia-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"
|
||||||
# PulseAudio, Network and Bluetooth control panels
|
# Audio control panel
|
||||||
"float, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
"float, pavucontrol"
|
||||||
"size 800 600, pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
"size 800 600, pavucontrol"
|
||||||
"move onscreen 50 100%-615,pavucontrol|nm-connection-editor|.blueman-manager-wrapped"
|
"move onscreen 100%-820 50,pavucontrol"
|
||||||
# File picker dialog
|
# File browser and picker dialog
|
||||||
"float, xdg-desktop-portal-gtk"
|
"float, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
||||||
"size 800 600, xdg-desktop-portal-gtk"
|
"size 800 600, org.gnome.Nautilus|xdg-desktop-portal-gtk"
|
||||||
"center, xdg-desktop-portal-gtk"
|
"center, org.gnome.Nautilus|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|WebCord|teams-for-linux|twinkle)" # Messaging
|
"workspace 3, (signal|whatsapp-for-linux|WebCord|teams-for-linux|twinkle)" # Messaging
|
||||||
"workspace 4, (Zotero|libreoffice|soffice|org.musicbrainz.Picard)(.*)" # Files
|
"workspace 4, (libreoffice|soffice)(.*)" # Documents
|
||||||
"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,16 +281,15 @@
|
||||||
"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"
|
||||||
|
|
||||||
|
@ -328,7 +327,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 | ${pkgs.gnugrep}/bin/grep -Po \"[0-9]+\.[0-9]+\").0\""
|
"CTRL_SHIFT, H, exec, xdg-open \"https://wiki.hyprland.org/$(${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl version -j | ${pkgs.jq}/bin/jq $args.tag | ${pkgs.gnused}/bin/sed s/v// | ${pkgs.gnused}/bin/sed s/\\\"//g)\""
|
||||||
|
|
||||||
"SUPER, F1, exec, ${config.programs.hyprlock.package}/bin/hyprlock"
|
"SUPER, F1, exec, ${config.programs.hyprlock.package}/bin/hyprlock"
|
||||||
"SUPER, P, exec, ${config.programs.wlogout.package}/bin/wlogout"
|
"SUPER, P, exec, ${config.programs.wlogout.package}/bin/wlogout"
|
||||||
|
@ -345,11 +344,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, D, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
"SUPER, Space, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
|
||||||
"SUPER, C, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
"SUPER, Return, exec, ${config.programs.alacritty.package}/bin/alacritty"
|
||||||
"SUPER, E, exec, ${config.programs.emacs.finalPackage}/bin/emacs"
|
"SUPER SHIFT, Return, exec, ${config.programs.emacs.finalPackage}/bin/emacsclient -c"
|
||||||
"SUPER, W, exec, ${config.programs.firefox.finalPackage}/bin/firefox"
|
"SUPER, W, exec, ${pkgs.nyxt}/bin/nyxt --no-socket"
|
||||||
"SUPER, F, exec, thunar"
|
"SUPER, F, exec, ${pkgs.nautilus}/bin/nautilus"
|
||||||
|
|
||||||
# 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 -"
|
||||||
|
|
53
system/home/neovim/default.nix
Normal file
53
system/home/neovim/default.nix
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
stylix.targets.neovim.enable = false;
|
||||||
|
stylix.targets.neovim.transparentBackground = {
|
||||||
|
main = true;
|
||||||
|
signColumn = true;
|
||||||
|
};
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
# defaultEditor = true;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
vimdiffAlias = true;
|
||||||
|
withNodeJs = true;
|
||||||
|
withRuby = true;
|
||||||
|
withPython3 = true;
|
||||||
|
extraLuaConfig = ''
|
||||||
|
require "defaults"
|
||||||
|
'';
|
||||||
|
# extraPackages = with pkgs; [
|
||||||
|
# # Misc utils
|
||||||
|
# curl
|
||||||
|
# fzf
|
||||||
|
# git
|
||||||
|
# gnutar
|
||||||
|
# gnumake
|
||||||
|
# gnused
|
||||||
|
# gcc
|
||||||
|
# ripgrep
|
||||||
|
# tree-sitter
|
||||||
|
|
||||||
|
# # Language servers
|
||||||
|
# nil
|
||||||
|
# lua-language-server
|
||||||
|
# fortls
|
||||||
|
# nodePackages.pyright
|
||||||
|
# nodePackages.yaml-language-server
|
||||||
|
# nodePackages.vim-language-server
|
||||||
|
# nodePackages.bash-language-server
|
||||||
|
|
||||||
|
# # Null LSP formatters
|
||||||
|
# alejandra
|
||||||
|
# beautysh
|
||||||
|
# black
|
||||||
|
# nodePackages.fixjson
|
||||||
|
# fprettify
|
||||||
|
# isort
|
||||||
|
# python3Packages.mdformat
|
||||||
|
# shellharden
|
||||||
|
# stylua
|
||||||
|
# ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,46 +1,23 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages =
|
imports = [
|
||||||
let
|
./python/default.nix
|
||||||
pythonEnv = (
|
./lua/default.nix
|
||||||
pkgs.python312.withPackages (
|
];
|
||||||
ps: with ps; [
|
home.packages = with pkgs; [
|
||||||
ipython
|
## Linters
|
||||||
python-lsp-server
|
shellcheck
|
||||||
pyflakes
|
yamllint
|
||||||
isort
|
|
||||||
numpy
|
|
||||||
scipy
|
|
||||||
astropy
|
|
||||||
xarray
|
|
||||||
netcdf4
|
|
||||||
matplotlib
|
|
||||||
]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
luaEnv = (pkgs.luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]));
|
|
||||||
in
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
## Language Environments
|
|
||||||
pythonEnv
|
|
||||||
luaEnv
|
|
||||||
|
|
||||||
## Linters
|
## Formatters
|
||||||
shellcheck
|
nixfmt-rfc-style
|
||||||
ruff
|
shfmt
|
||||||
|
nodePackages.prettier
|
||||||
|
nodePackages.prettier-plugin-toml
|
||||||
|
|
||||||
## Formatters
|
## Language servers
|
||||||
nixfmt-rfc-style
|
nixd
|
||||||
shfmt
|
rust-analyzer
|
||||||
stylua
|
nodePackages.typescript-language-server
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
"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
|
|
||||||
}
|
|
||||||
}
|
|
8
system/home/programming/lua/default.nix
Normal file
8
system/home/programming/lua/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
(luajit.withPackages (ps: [ (ps.callPackage ./luarocks/scilua.nix { }) ]))
|
||||||
|
lua-language-server
|
||||||
|
stylua
|
||||||
|
];
|
||||||
|
}
|
24
system/home/programming/python/default.nix
Normal file
24
system/home/programming/python/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ 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;
|
||||||
|
}
|
|
@ -1,20 +1,18 @@
|
||||||
{
|
{
|
||||||
pkgs ? import <nixpkgs> { },
|
pkgs ? import <nixpkgs> { },
|
||||||
python3 ? pkgs.python3Full,
|
python3 ? pkgs.python3,
|
||||||
extraPackages ? [ ],
|
extraPackages ? with pkgs; [ uv ],
|
||||||
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";
|
||||||
|
@ -26,12 +24,8 @@ let
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
pkgs.mkShellNoCC {
|
pkgs.mkShellNoCC {
|
||||||
packages = [
|
packages = [ pythonWrapped ] ++ extraPackages;
|
||||||
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
|
||||||
'';
|
'';
|
||||||
}
|
}
|
|
@ -24,9 +24,3 @@ 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" ".ipython/profile_default/ipython_config.json"; do
|
for TARGET in ".inputrc" ".config/starship.toml"; do
|
||||||
SOURCE="$HOME/$TARGET"
|
SOURCE="$HOME/$TARGET"
|
||||||
echo "--- $SOURCE ---"
|
echo "--- $SOURCE ---"
|
||||||
TMP_TARGET=/tmp/rsync-local-config
|
TMP_TARGET=/tmp/rsync-local-config
|
||||||
|
|
|
@ -1,27 +1,13 @@
|
||||||
# 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/notebooks/"
|
"$HOME/Documents/library/"
|
||||||
)
|
)
|
||||||
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"
|
||||||
"git@git.ccfe.ac.uk:elitherl/notebooks.git"
|
"https://git.xenia.me.uk/pixelifytica/library.git"
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in "${!SYNC_DIRS[@]}"; do
|
for i in "${!SYNC_DIRS[@]}"; do
|
||||||
|
@ -43,3 +29,17 @@ 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 +0,0 @@
|
||||||
$env.config.show_banner = false
|
|
|
@ -9,56 +9,18 @@
|
||||||
./git.nix
|
./git.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./starship.nix
|
./starship.nix
|
||||||
|
./extras.nix
|
||||||
];
|
];
|
||||||
home = {
|
home.shellAliases = {
|
||||||
packages = with pkgs; [
|
sync-all = "sync-git; vdirsyncer sync; mbsync -a";
|
||||||
asciiquarium-transparent
|
sync-and-shutdown = "sync-all && shutdown now";
|
||||||
pipes
|
protonup = "sudo wg-quick up protonvpn && sudo wg";
|
||||||
cbonsai
|
protondown = "sudo wg-quick down protonvpn";
|
||||||
];
|
|
||||||
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 = {
|
nushell.enable = true;
|
||||||
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;
|
||||||
|
@ -101,9 +63,7 @@
|
||||||
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";
|
||||||
|
@ -111,8 +71,8 @@
|
||||||
};
|
};
|
||||||
hyfetch = {
|
hyfetch = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = rec {
|
settings = {
|
||||||
preset = if light_dark == "dark" then "transgender" else "rainbow";
|
preset = "pansexual";
|
||||||
mode = "rgb";
|
mode = "rgb";
|
||||||
light_dark = config.lib.stylix.scheme.variant;
|
light_dark = config.lib.stylix.scheme.variant;
|
||||||
lightness = 0.4;
|
lightness = 0.4;
|
||||||
|
|
8
system/home/shell/extras.nix
Normal file
8
system/home/shell/extras.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
asciiquarium-transparent
|
||||||
|
pipes
|
||||||
|
cbonsai
|
||||||
|
];
|
||||||
|
}
|
|
@ -21,7 +21,11 @@
|
||||||
"git*".user = "git";
|
"git*".user = "git";
|
||||||
"legion" = {
|
"legion" = {
|
||||||
user = "pixelifytica";
|
user = "pixelifytica";
|
||||||
hostname = "192.168.1.225";
|
hostname = "192.168.0.31";
|
||||||
|
};
|
||||||
|
"vanguard" = {
|
||||||
|
user = "pixelifytica";
|
||||||
|
hostname = "192.168.0.90";
|
||||||
};
|
};
|
||||||
"ionos" = {
|
"ionos" = {
|
||||||
user = "root";
|
user = "root";
|
||||||
|
|
|
@ -5,11 +5,18 @@
|
||||||
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;
|
||||||
|
@ -17,6 +24,10 @@
|
||||||
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 = " ";
|
||||||
|
@ -46,20 +57,96 @@
|
||||||
untracked = " ";
|
untracked = " ";
|
||||||
typechanged = " ";
|
typechanged = " ";
|
||||||
};
|
};
|
||||||
|
golang.symbol = " ";
|
||||||
|
guix_shell.symbol = " ";
|
||||||
|
haskell.symbol = " ";
|
||||||
|
haxe.symbol = " ";
|
||||||
hg_branch.symbol = " ";
|
hg_branch.symbol = " ";
|
||||||
hostname.ssh_symbol = " ";
|
hostname = {
|
||||||
|
ssh_only = false;
|
||||||
|
ssh_symbol = " ";
|
||||||
|
};
|
||||||
|
java.symbol = " ";
|
||||||
jobs.symbol = " ";
|
jobs.symbol = " ";
|
||||||
|
julia.symbol = " ";
|
||||||
|
kotlin.symbol = " ";
|
||||||
line_break.disabled = false;
|
line_break.disabled = false;
|
||||||
memory_usage.disabled = false;
|
localip.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 = " ";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
python.python_binary = "python3";
|
package.symbol = " ";
|
||||||
|
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;
|
||||||
|
@ -72,7 +159,12 @@
|
||||||
sigint_symbol = " ";
|
sigint_symbol = " ";
|
||||||
signal_symbol = " ";
|
signal_symbol = " ";
|
||||||
};
|
};
|
||||||
sudo.disabled = false;
|
sudo = {
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
swift.symbol = " ";
|
||||||
|
zig.symbol = " ";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
zle-line-init() {
|
|
||||||
emulate -L zsh
|
|
||||||
|
|
||||||
[[ $CONTEXT == start ]] || return 0
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
zle .recursive-edit
|
|
||||||
local -i ret=$?
|
|
||||||
[[ $ret == 0 && $KEYS == $'\4' ]] || break
|
|
||||||
[[ -o ignore_eof ]] || exit 0
|
|
||||||
done
|
|
||||||
|
|
||||||
local saved_prompt=$PROMPT
|
|
||||||
local saved_rprompt=$RPROMPT
|
|
||||||
PROMPT='λ '
|
|
||||||
RPROMPT=''
|
|
||||||
zle .reset-prompt
|
|
||||||
PROMPT=$saved_prompt
|
|
||||||
RPROMPT=$saved_rprompt
|
|
||||||
|
|
||||||
if ((ret)); then
|
|
||||||
zle .send-break
|
|
||||||
else
|
|
||||||
zle .accept-line
|
|
||||||
fi
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
|
|
||||||
zle -N zle-line-init
|
|
|
@ -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";
|
||||||
|
|
4
system/home/terminal/default.nix
Normal file
4
system/home/terminal/default.nix
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [ ./alacritty.nix ];
|
||||||
|
}
|
|
@ -2,7 +2,18 @@
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
(texlive.combine {
|
(texlive.combine {
|
||||||
inherit (texlive) scheme-full;
|
inherit (texlive)
|
||||||
|
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,254 +10,270 @@
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
settings.main = {
|
settings.main =
|
||||||
name = "main";
|
let
|
||||||
layer = "top";
|
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
|
||||||
position = "left";
|
in
|
||||||
# Layout
|
{
|
||||||
"modules-left" = [
|
name = "main";
|
||||||
"hyprland/workspaces"
|
layer = "top";
|
||||||
"mpris"
|
position = "left";
|
||||||
];
|
# Layout
|
||||||
"modules-center" = [ ];
|
"modules-left" = [
|
||||||
"modules-right" = [
|
"hyprland/workspaces"
|
||||||
"custom/notification"
|
"mpris"
|
||||||
"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 = "";
|
|
||||||
};
|
|
||||||
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" = {
|
"modules-center" = [ ];
|
||||||
"default" = "";
|
"modules-right" = [
|
||||||
};
|
"custom/notification"
|
||||||
"status-icons" = {
|
"pulseaudio"
|
||||||
"playing" = "";
|
"network"
|
||||||
"paused" = "";
|
"bluetooth"
|
||||||
"stopped" = "";
|
"clock#calendar"
|
||||||
};
|
"clock"
|
||||||
"ignored-players" = [
|
"backlight"
|
||||||
"com"
|
"battery"
|
||||||
"firefox"
|
"custom/weather"
|
||||||
|
"systemd-failed-units"
|
||||||
|
"tray"
|
||||||
];
|
];
|
||||||
};
|
# Module config
|
||||||
"pulseaudio#source" = {
|
"hyprland/workspaces" = {
|
||||||
scroll-step = 5;
|
format = "{icon}";
|
||||||
format = "{format_source}";
|
format-icons = {
|
||||||
format-source = "";
|
"1" = "";
|
||||||
format-source-muted = "";
|
"2" = "";
|
||||||
tooltip = true;
|
"3" = "";
|
||||||
tooltip-format = "{desc} ({volume}%)";
|
"4" = "";
|
||||||
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
"5" = "";
|
||||||
on-click-right = "${config.services.avizo.package}/bin/volumectl %";
|
"6" = "";
|
||||||
on-scroll-up = "${config.services.avizo.package}/bin/volumectl -u + 5";
|
"7" = "";
|
||||||
on-scroll-down = "${config.services.avizo.package}/bin/volumectl -u - 5";
|
default = "";
|
||||||
};
|
};
|
||||||
"pulseaudio#sink" = {
|
all-outputs = false;
|
||||||
scroll-step = 5;
|
persistent-workspaces = {
|
||||||
format = "{icon}";
|
"1" = [ ];
|
||||||
format-icons = {
|
"2" = [ ];
|
||||||
car = "";
|
"3" = [ ];
|
||||||
default = [
|
"4" = [ ];
|
||||||
""
|
"5" = [ ];
|
||||||
""
|
"6" = [ ];
|
||||||
""
|
"7" = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"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"
|
||||||
];
|
];
|
||||||
default-muted = "";
|
"player-icons" = {
|
||||||
hands-free = "";
|
"default" = "";
|
||||||
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 = {
|
"status-icons" = {
|
||||||
on-scroll-up = "shift_up";
|
"playing" = "";
|
||||||
on-scroll-down = "shift_down";
|
"paused" = "";
|
||||||
|
"stopped" = "";
|
||||||
};
|
};
|
||||||
|
"ignored-players" = [
|
||||||
|
"com"
|
||||||
|
"org"
|
||||||
|
"firefox"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"custom/clock-icon" = {
|
pulseaudio = {
|
||||||
format = "";
|
scroll-step = 5;
|
||||||
tooltip = false;
|
format = "{format_source}\n{icon}";
|
||||||
};
|
# format-muted = "{format_source} {icon}";
|
||||||
clock = {
|
format-source = "";
|
||||||
format = "{:%H\n%M}";
|
format-source-muted = "";
|
||||||
tooltip = false;
|
format-icons = {
|
||||||
};
|
car = "";
|
||||||
backlight = {
|
default = [
|
||||||
format = "{icon}";
|
""
|
||||||
tooltip-format = "{percent}%";
|
""
|
||||||
format-icons = [
|
""
|
||||||
""
|
];
|
||||||
""
|
default-muted = "";
|
||||||
""
|
hands-free = "";
|
||||||
""
|
headset = "";
|
||||||
""
|
phone = "";
|
||||||
""
|
portable = "";
|
||||||
""
|
headphone = "";
|
||||||
""
|
};
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
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;
|
tooltip = true;
|
||||||
interval = 900; # Every 15 minutes
|
tooltip-format = "{desc} ({volume}%)";
|
||||||
exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
|
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||||
return-type = "json";
|
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;
|
||||||
};
|
};
|
||||||
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;
|
||||||
|
@ -267,7 +283,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}pt;
|
font-size: ${toString (config.stylix.fonts.sizes.desktop + 2)}px;
|
||||||
}
|
}
|
||||||
|
|
||||||
window {
|
window {
|
||||||
|
@ -300,6 +316,22 @@
|
||||||
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;
|
||||||
|
@ -307,6 +339,9 @@
|
||||||
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};
|
||||||
}
|
}
|
||||||
|
@ -324,30 +359,31 @@
|
||||||
#custom-notification {
|
#custom-notification {
|
||||||
color: ${scheme.base08};
|
color: ${scheme.base08};
|
||||||
}
|
}
|
||||||
#pulseaudio.source {
|
#pulseaudio {
|
||||||
color: ${scheme.base09};
|
color: ${scheme.base09};
|
||||||
}
|
}
|
||||||
#pulseaudio.sink {
|
|
||||||
color: ${scheme.base0A};
|
|
||||||
}
|
|
||||||
#network {
|
#network {
|
||||||
color: ${scheme.base0B};
|
color: ${scheme.base0A};
|
||||||
|
padding: 2px 6px 2px 1px;
|
||||||
}
|
}
|
||||||
#bluetooth {
|
#bluetooth {
|
||||||
color: ${scheme.base0C};
|
color: ${scheme.base0B};
|
||||||
}
|
}
|
||||||
#custom-calendar-icon,
|
|
||||||
#clock.calendar {
|
#clock.calendar {
|
||||||
color: ${scheme.base0D};
|
color: ${scheme.base0C};
|
||||||
|
padding: 2px 3px 2px 3px;
|
||||||
}
|
}
|
||||||
#custom-clock-icon,
|
|
||||||
#clock {
|
#clock {
|
||||||
color: ${scheme.base0E};
|
color: ${scheme.base0D};
|
||||||
}
|
padding: 2px 1px 2px 2px;
|
||||||
#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};
|
||||||
}
|
}
|
||||||
|
@ -359,6 +395,9 @@
|
||||||
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 esc lctl)
|
capsctrl (tap-hold $tap-time $hold-time caps 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 lsft)
|
s (tap-hold $tap-time $hold-time s lalt)
|
||||||
d (tap-hold $tap-time $hold-time d lalt)
|
d (tap-hold $tap-time $hold-time d lctl)
|
||||||
f (tap-hold $tap-time $hold-time f lctl)
|
f (tap-hold $tap-time $hold-time f lsft)
|
||||||
j (tap-hold $tap-time $hold-time j lctl)
|
j (tap-hold $tap-time $hold-time j lsft)
|
||||||
k (tap-hold $tap-time $hold-time k lalt)
|
k (tap-hold $tap-time $hold-time k lctl)
|
||||||
l (tap-hold $tap-time $hold-time l lsft)
|
l (tap-hold $tap-time $hold-time l lalt)
|
||||||
; (tap-hold $tap-time $hold-time ; lmet)
|
; (tap-hold $tap-time $hold-time ; lmet)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
let
|
let
|
||||||
emacs = [ "emacs.desktop" ];
|
emacs = [ "emacsclient.desktop" ];
|
||||||
browser = [ "firefox.desktop" ];
|
browser = [ "firefox.desktop" ];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
"inode/directory" = [ "org.xfce.thunar.desktop" ];
|
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
|
||||||
"inode/symlink" = [ "org.xfce.thunar.desktop" ];
|
"inode/symlink" = [ "org.gnome.Nautilus.desktop" ];
|
||||||
|
|
||||||
"image/jpeg" = [ "com.xfce.ristretto.desktop" ];
|
"image/jpeg" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
||||||
"image/png" = [ "com.xfce.ristretto.desktop" ];
|
"image/png" = [ "com.github.weclaw1.ImageRoll.desktop" ];
|
||||||
"audio/mpeg" = [ "com.github.neithern.g4music.desktop" ];
|
"audio/mpeg" = [ "com.github.neithern.g4music.desktop" ];
|
||||||
"video/mp4" = [ "mpv.desktop" ];
|
"video/mp4" = [ "com.github.rafostar.Clapper.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" = [ "emacs-mail.desktop" ];
|
"x-scheme-handler/mailto" = [ "emacsclient-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,4 +72,7 @@ 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, ... }:
|
{ config, pkgs, ... }:
|
||||||
{
|
{
|
||||||
imports = [ ./caddy.nix ];
|
imports = [ ./caddy.nix ];
|
||||||
services = {
|
services = {
|
||||||
|
@ -23,10 +23,16 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
caddy.virtualHosts."git.xenia.me.uk".extraConfig =
|
# gitea-actions-runner = {
|
||||||
let
|
# package = pkgs.forgejo-runner;
|
||||||
port = config.services.forgejo.settings.server.HTTP_PORT;
|
# instances.default = {
|
||||||
in
|
# enable = true;
|
||||||
"reverse_proxy http://localhost:${toString port}";
|
# 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";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
{ 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,13 +5,15 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
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.git.userEmail = config.accounts.email.accounts.outlook.address;
|
programs = {
|
||||||
|
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