Compare commits

..

No commits in common. "main" and "stylix" have entirely different histories.
main ... stylix

390 changed files with 1267 additions and 1611 deletions

View file

@ -5,7 +5,7 @@ HOST := $(shell hostname)
default: build default: build
build: build:
nix build --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel nix build -j 1 --keep-going .#nixosConfigurations.$(HOST).config.system.build.toplevel
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

View file

@ -53,11 +53,11 @@
"base16-helix": { "base16-helix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1696727917, "lastModified": 1720809814,
"narHash": "sha256-FVrbPk+NtMra0jtlC5oxyNchbm8FosmvXIatkRbYy1g=", "narHash": "sha256-numb3xigRGnr/deF7wdjBwVg7fpbTH7reFDkJ75AJkY=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-helix", "repo": "base16-helix",
"rev": "dbe1480d99fe80f08df7970e471fac24c05f2ddb", "rev": "34f41987bec14c0f3f6b2155c19787b1f6489625",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -101,15 +101,15 @@
"base16-vim": { "base16-vim": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1663659192, "lastModified": 1716150083,
"narHash": "sha256-uJvaYYDMXvoo0fhBZUhN8WBXeJ87SRgof6GEK2efFT0=", "narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=",
"owner": "chriskempson", "owner": "tinted-theming",
"repo": "base16-vim", "repo": "base16-vim",
"rev": "3be3cd82cd31acfcab9a41bad853d9c68d30478d", "rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "chriskempson", "owner": "tinted-theming",
"repo": "base16-vim", "repo": "base16-vim",
"type": "github" "type": "github"
} }
@ -130,6 +130,27 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils": {
"inputs": {
"systems": [
"stylix",
"systems"
]
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"fromYaml": { "fromYaml": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -170,11 +191,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726989464, "lastModified": 1720042825,
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", "narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", "rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -189,11 +210,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1730274547, "lastModified": 1719045863,
"narHash": "sha256-34sNwbLNuE6l7jsBkBRUMRahoZc63lCsCa+PoZd/8W8=", "narHash": "sha256-J0RQ2aiAchRxNzl2jlvqFNpFnDW2GZ7QXp53y7fs4GU=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "49828459e58b6987d2738b74c085cecb963355ab", "rev": "db915e9a55cecdedac53a3cdba354dbc281938d9",
"revCount": 19, "revCount": 13,
"type": "git", "type": "git",
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git" "url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
}, },
@ -202,13 +223,33 @@
"url": "https://git.xenia.me.uk/pixelifytica/iosevka.git" "url": "https://git.xenia.me.uk/pixelifytica/iosevka.git"
} }
}, },
"nix-index-database": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1725161148,
"narHash": "sha256-WfAHq3Ag3vLNFfWxKHjFBFdPI6JIideWFJod9mx1eoo=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "32058e9138248874773630c846563b1a78ee7a5b",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-index-database",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1728888510, "lastModified": 1717602782,
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=", "narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", "rev": "e8057b67ebf307f01bdcc8fba94d94f75039d1f6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -220,11 +261,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1730883749, "lastModified": 1725407940,
"narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=", "narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "dba414932936fde69f0606b4f1d87c5bc0003ede", "rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -238,6 +279,7 @@
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"iosevka-custom": "iosevka-custom", "iosevka-custom": "iosevka-custom",
"nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"stylix": "stylix" "stylix": "stylix"
} }
@ -252,28 +294,44 @@
"base16-tmux": "base16-tmux", "base16-tmux": "base16-tmux",
"base16-vim": "base16-vim", "base16-vim": "base16-vim",
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"gnome-shell": "gnome-shell", "gnome-shell": "gnome-shell",
"home-manager": [ "home-manager": [
"home-manager" "home-manager"
], ],
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1718122552, "lastModified": 1726497442,
"narHash": "sha256-A+dBkSwp8ssHKV/WyXb9uqIYrHBqHvtSedU24Lq9lqw=", "narHash": "sha256-fieyqmLEJQqqnuJcg2CAnQ8kHapXHhg9rL48NNWjnPw=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "e59d2c1725b237c362e4a62f5722f5b268d566c7", "rev": "149b313ddf91c3cc94309170498b162cec666675",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "danth", "owner": "danth",
"ref": "release-24.05",
"repo": "stylix", "repo": "stylix",
"type": "github" "type": "github"
} }
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -8,18 +8,22 @@
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-24.05"; url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
stylix = { stylix = {
url = "github:danth/stylix/release-24.05"; url = "github:danth/stylix";
inputs = { inputs = {
nixpkgs.follows = "nixpkgs"; nixpkgs.follows = "nixpkgs";
home-manager.follows = "home-manager"; home-manager.follows = "home-manager";
}; };
}; };
nix-index-database = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git";
}; };
outputs = outputs =

View file

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View file

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View file

@ -1,7 +1,6 @@
{ username, ... }: { ... }:
{ {
imports = [ imports = [
./services/adguardhome.nix
./services/caddy.nix ./services/caddy.nix
./services/forgejo.nix ./services/forgejo.nix
./services/grafana.nix ./services/grafana.nix
@ -11,16 +10,11 @@
./services/satisfactory/default.nix ./services/satisfactory/default.nix
./services/sshd.nix ./services/sshd.nix
./services/syncthing.nix ./services/syncthing.nix
./services/xandikos.nix
]; ];
boot.loader = { boot.loader = {
systemd-boot.enable = true; systemd-boot.enable = true;
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
}; };
home-manager.users.${username} = {
home.stateVersion = "23.05";
};
system.stateVersion = "23.05";
users.mutableUsers = false; users.mutableUsers = false;
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
} }

View file

@ -2,8 +2,30 @@
{ {
imports = [ ./laptop.nix ]; imports = [ ./laptop.nix ];
home-manager.users.${username} = { home-manager.users.${username} = {
home.stateVersion = "23.05"; wayland.windowManager.sway.config = {
wayland.windowManager.hyprland.settings.monitor = [ "eDP-1,preferred,auto,1.25" ]; output."eDP-1".scale = "1.25";
}; workspaceOutputAssign = [
system.stateVersion = "23.05"; {
output = "eDP-1";
workspace = "1";
}
];
};
services.kanshi = {
enable = true;
settings = [
{
profile = {
name = "default";
outputs = [
{
criteria = "eDP-1";
position = "0,0";
}
];
};
}
];
};
};
} }

View file

@ -1,16 +1,90 @@
{ pkgs, username, ... }: { pkgs, username, ... }:
{ {
imports = [ imports = [ ./laptop.nix ];
./laptop.nix
./work.nix
];
home-manager.users.${username} = { home-manager.users.${username} = {
home.stateVersion = "23.05"; imports = [ ./home/work.nix ];
wayland.windowManager.hyprland.settings.monitor = [ wayland.windowManager.sway.config = {
"eDP-1,preferred,auto,1.25" output = {
"desc:Dell Inc. DELL P3223QE CCG8YN3,preferred,auto-left,1.5" # Built-in
"eDP-1".scale = "1.25";
# Work
"Dell Inc. DELL P3223QE CCG8YN3".scale = "1.5";
# Home
"Acer Technologies ED270R TJMEE0043W01".mode = "1920x1080@120Hz";
"Microstep MSI G27CQ4 E2 Unknown" = {
mode = "2560x1440@120Hz";
scale = "1.25";
};
};
workspaceOutputAssign = [
{
output = "eDP-1";
workspace = "1";
}
]; ];
}; };
services.kanshi = {
enable = true;
settings =
let
laptopScreen.criteria = "eDP-1";
workMonitor.criteria = "Dell Inc. DELL P3223QE CCG8YN3";
homeMonitor1.criteria = "Acer Technologies ED270R TJMEE0043W01";
homeMonitor2.criteria = "Microstep MSI G27CQ4 E2 Unknown";
in
[
{
profile = {
name = "default";
outputs = [
{
inherit (laptopScreen) criteria;
status = "enable";
position = "0,0";
}
];
};
}
{
profile = {
name = "work";
outputs = [
{
inherit (laptopScreen) criteria;
status = "disable";
}
{
inherit (workMonitor) criteria;
status = "enable";
position = "0,0";
}
];
};
}
{
profile = {
name = "home";
outputs = [
{
inherit (laptopScreen) criteria;
status = "disable";
}
{
inherit (homeMonitor1) criteria;
status = "enable";
position = "0,140";
}
{
inherit (homeMonitor2) criteria;
status = "enable";
position = "1920,0";
}
];
};
}
];
};
};
boot.initrd = { boot.initrd = {
secrets = { secrets = {
"/crypto_keyfile.bin" = null; "/crypto_keyfile.bin" = null;
@ -20,12 +94,14 @@
keyFile = "/crypto_keyfile.bin"; keyFile = "/crypto_keyfile.bin";
}; };
}; };
system.stateVersion = "23.05";
environment = { environment = {
etc."ppp/options".text = '' etc."ppp/options".text = ''
ipcp-accept-remote ipcp-accept-remote
''; '';
systemPackages = with pkgs; [ openfortivpn ]; systemPackages = with pkgs; [ openfortivpn ];
}; };
services.hardware.bolt.enable = true; services = {
samba.enable = true;
hardware.bolt.enable = true;
};
} }

View file

@ -1,14 +1,11 @@
{ pkgs, username, ... }: { pkgs, username, ... }:
{ {
imports = [ imports = [ ./desktop.nix ];
./desktop.nix
./work.nix
];
home-manager.users.${username} = { home-manager.users.${username} = {
home.stateVersion = "23.05"; imports = [ ./home/work.nix ];
wayland.windowManager.hyprland.settings.monitor = [ wayland.windowManager.sway.config = {
"desc:Dell Inc. DELL P3223QE CCG8YN3,preferred,auto,1.5" output."Dell Inc. DELL P3223QE CCG8YN3".scale = "1.5";
]; };
}; };
boot = { boot = {
loader.efi.efiSysMountPoint = "/boot/efi"; loader.efi.efiSysMountPoint = "/boot/efi";
@ -22,7 +19,6 @@
}; };
}; };
}; };
system.stateVersion = "23.05";
environment = { environment = {
etc."ppp/options".text = '' etc."ppp/options".text = ''
ipcp-accept-remote ipcp-accept-remote
@ -32,5 +28,4 @@
samba samba
]; ];
}; };
services.ollama.enable = true;
} }

View file

@ -5,27 +5,27 @@
... ...
}: }:
{ {
imports = [ imports = [ ./desktop.nix ];
./desktop.nix
./steam.nix
];
home-manager.users.${username} = { home-manager.users.${username} = {
home = { home.packages = with pkgs; [
stateVersion = "23.05"; krita
packages = with pkgs; [ kdenlive
helvum helvum
prusa-slicer prusa-slicer
blender blender
freecad freecad
openscad openscad
kicad-small kicad-small
mangohud
wineWowPackages.waylandFull wineWowPackages.waylandFull
winetricks winetricks
lutris lutris
cartridges cartridges
prismlauncher prismlauncher
(writeShellScriptBin "steamscope" ''
gamescope -w 2560 -h 1440 -r 120 --adaptive-sync --force-grab-cursor --fullscreen -e -- steam -gamepadui
'')
]; ];
};
programs.obs-studio = { programs.obs-studio = {
enable = true; enable = true;
plugins = with pkgs.obs-studio-plugins; [ plugins = with pkgs.obs-studio-plugins; [
@ -35,10 +35,32 @@
input-overlay input-overlay
]; ];
}; };
wayland.windowManager.hyprland.settings.monitor = [ wayland.windowManager.sway.config = {
"desc:Acer Technologies ED270R TJMEE0043W01,1920x1080@144,0x140,1.0,vrr,2" output = {
"desc:Microstep MSI G27CQ4 E2,2560x1440@144,1920x0,1.25,vrr,2" "Acer Technologies ED270R TJMEE0043W01" = {
mode = "1920x1080@120Hz";
position = "0 140";
adaptive_sync = "off";
};
"Microstep MSI G27CQ4 E2 Unknown" = {
mode = "2560x1440@120Hz";
scale = "1.25";
position = "1920 0";
adaptive_sync = "on";
};
};
workspaceOutputAssign = [
{
output = "DP-1";
workspace = "2";
}
{
output = "DP-2";
workspace = "1";
}
]; ];
startup = [ { command = "${pkgs.xorg.xrandr}/bin/xrandr --output DP-1 --primary"; } ];
};
}; };
boot = { boot = {
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
@ -47,19 +69,24 @@
''; '';
}; };
hardware = { hardware = {
amdgpu = { amdgpu.initrd.enable = true;
initrd.enable = true;
opencl.enable = true;
};
opengl = { opengl = {
enable = true; enable = true;
driSupport = true; driSupport = true;
driSupport32Bit = true; driSupport32Bit = true;
}; };
steam-hardware.enable = true;
}; };
services.ollama = { programs = {
gamemode.enable = true;
steam = {
enable = true; enable = true;
acceleration = "rocm"; remotePlay.openFirewall = true;
gamescopeSession.enable = true;
};
gamescope = {
enable = true;
capSysNice = true;
};
}; };
system.stateVersion = "23.05";
} }

View file

@ -29,10 +29,7 @@
"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}" ];
channel.enable = true; channel.enable = true;
gc = { gc = {
automatic = true; automatic = true;
@ -56,20 +53,34 @@
max-free = ${toString (1024 * 1024 * 1024)} max-free = ${toString (1024 * 1024 * 1024)}
''; '';
}; };
system.autoUpgrade = { nixpkgs = {
config.allowUnfreePredicate =
pkg:
builtins.elem (lib.getName pkg) [
"steam"
"steam-original"
"steam-run"
"steamcmd"
];
overlays = [ (final: prev: { inherit (inputs.plasma-manager.packages.${prev.system}) rc2nix; }) ];
};
system = {
stateVersion = "23.05";
autoUpgrade = {
enable = true; 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}";
dates = "02:00"; dates = "02:00";
randomizedDelaySec = "5min"; randomizedDelaySec = "5min";
fixedRandomDelay = true;
flags = [ flags = [
"--accept-flake-config"
"--option" "--option"
"extra-binary-caches" "extra-binary-caches"
"https://nix.xenia.me.uk" "https://nix.xenia.me.uk"
]; ];
}; };
};
systemd.services = lib.mkIf config.system.autoUpgrade.enable { systemd.services = lib.mkIf config.system.autoUpgrade.enable {
nixos-upgrade.serviceConfig = { nixos-upgrade.serviceConfig = {
CPUQuota = "75%"; CPUQuota = "75%";
@ -125,6 +136,7 @@
imports = [ ./home/default.nix ]; imports = [ ./home/default.nix ];
home = { home = {
inherit username; inherit username;
stateVersion = "23.05";
homeDirectory = "/home/${username}"; homeDirectory = "/home/${username}";
}; };
}; };
@ -146,19 +158,18 @@
file file
zip zip
unzip unzip
p7zip
curl curl
wget wget
dig dig
wireguard-tools wireguard-tools
quickemu quickemu
distrobox
]; ];
localBinInPath = true; localBinInPath = true;
}; };
programs = { programs = {
command-not-found.enable = false; command-not-found.enable = false;
ssh.startAgent = true; ssh.startAgent = true;
fish.enable = true;
nano = { nano = {
enable = true; enable = true;
syntaxHighlight = true; syntaxHighlight = true;
@ -170,6 +181,7 @@
}; };
}; };
services = { services = {
passSecretService.enable = true;
upower.enable = true; upower.enable = true;
power-profiles-daemon.enable = true; power-profiles-daemon.enable = true;
system76-scheduler = { system76-scheduler = {
@ -179,38 +191,34 @@
}; };
security.rtkit.enable = true; security.rtkit.enable = true;
virtualisation.podman.enable = true; virtualisation.podman.enable = true;
location = {
latitude = 51.7;
longitude = -1.2;
provider = "manual";
};
time.timeZone = "Europe/London"; time.timeZone = "Europe/London";
i18n.defaultLocale = "en_GB.UTF-8"; i18n.defaultLocale = "en_GB.UTF-8";
console.useXkbConfig = true; console.useXkbConfig = true;
stylix = { stylix = {
enable = true; enable = true;
image = ./home/desktop/wallpapers/tropic_island_day.jpg; image = ./home/wallpapers/landscapes/tropic_island_day.jpg;
base16Scheme = ./one-light.yaml; # Base24 scheme base16Scheme = "${pkgs.base16-schemes}/share/themes/one-light.yaml";
polarity = "light";
opacity.popups = 0.8; opacity.popups = 0.8;
cursor = { cursor = {
package = pkgs.volantes-cursors; package = pkgs.volantes-cursors;
name = "volantes_cursors"; name = "volantes_cursors";
size = 32; size = 32;
}; };
fonts = { fonts =
serif = { let
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-etoile; proportional = {
name = inputs.iosevka-custom.outputs.names.iosevka-custom-etoile;
};
sansSerif = {
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-aile; package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-aile;
name = inputs.iosevka-custom.outputs.names.iosevka-custom-aile; name = inputs.iosevka-custom.outputs.names.iosevka-custom-aile;
}; };
monospace = { monospace = {
package = pkgs.nerdfonts.override { fonts = [ "Iosevka" ]; }; package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-nerdfont;
name = "Iosevka Nerd Font"; name = inputs.iosevka-custom.outputs.names.iosevka-custom-nerdfont;
}; };
in
{
inherit monospace;
serif = proportional;
sansSerif = proportional;
sizes = { sizes = {
applications = 12; applications = 12;
desktop = 14; desktop = 14;
@ -219,10 +227,25 @@
}; };
}; };
}; };
fonts.packages = with pkgs; [ fonts = {
dejavu_fonts # General compatibility packages =
liberation_ttf # Documents (with inputs.iosevka-custom.outputs.packages.${pkgs.system}; [
iosevka-custom-nerdfont
iosevka-custom-aile
])
++ (with pkgs; [
lmodern # LaTeX lmodern # LaTeX
noto-fonts-emoji # Emoji
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; }) (nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
]; ]);
fontconfig = {
enable = true;
defaultFonts = with inputs.iosevka-custom.outputs.names; {
serif = [ iosevka-custom-aile ];
sansSerif = [ iosevka-custom-aile ];
monospace = [ iosevka-custom-nerdfont ];
emoji = [ "Noto Color Emoji" ];
};
};
};
} }

View file

@ -1,15 +1,13 @@
{ pkgs, username, ... }: { pkgs, username, ... }:
{ {
home-manager.users.${username}.imports = [ ./home/desktop/default.nix ]; home-manager.users.${username}.imports = [ ./home/desktop.nix ];
nixpkgs.config.chromium.commandLineArgs = "--password-store='gnome-libsecret' --enable-features=UseOzonePlatform --ozone-platform=wayland"; nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
environment = { environment = {
sessionVariables = { sessionVariables = {
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
MOZ_ENABLE_WAYLAND = "1";
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
XDG_SESSION_TYPE = "wayland";
QT_QPA_PLATFORM = "wayland"; QT_QPA_PLATFORM = "wayland";
GRIM_DEFAULT_DIR = "$HOME/Pictures/Screenshots";
}; };
systemPackages = with pkgs; [ systemPackages = with pkgs; [
libsecret libsecret
@ -17,7 +15,6 @@
xdg-utils xdg-utils
hunspell hunspell
hunspellDicts.en_GB-large hunspellDicts.en_GB-large
gnome.nautilus
]; ];
}; };
security = { security = {
@ -34,36 +31,29 @@
programs = { programs = {
dconf.enable = true; dconf.enable = true;
noisetorch.enable = true; noisetorch.enable = true;
seahorse.enable = true;
file-roller.enable = true;
kdeconnect.enable = true; kdeconnect.enable = true;
hyprland.enable = true; file-roller.enable = true;
thunar = {
enable = true;
plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
};
sway.enable = true;
xwayland.enable = true; xwayland.enable = true;
}; };
gtk.iconCache.enable = true; gtk.iconCache.enable = true;
qt = {
enable = true;
style = "adwaita";
platformTheme = "gnome";
};
services = { services = {
gnome.gnome-keyring.enable = true; dbus.packages = [ pkgs.gcr ];
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;
gvfs = { gvfs = {
enable = true; enable = true;
package = pkgs.gnome3.gvfs; package = pkgs.gnome3.gvfs;
}; };
kanata = {
enable = true;
keyboards.main = {
config = builtins.readFile ./kanata.kbd;
extraDefCfg = "process-unmapped-keys yes";
};
};
pipewire = { pipewire = {
enable = true; enable = true;
pulse.enable = true; pulse.enable = true;
@ -76,7 +66,7 @@
enable = true; enable = true;
settings = settings =
let let
default_session.command = "Hyprland"; default_session.command = "sway";
in in
{ {
inherit default_session; inherit default_session;
@ -88,9 +78,18 @@
}; };
xserver = { xserver = {
enable = true; enable = true;
xkb.layout = "gb"; xkb = {
layout = "gb";
variant = "";
options = "ctrl:nocaps";
}; };
}; };
};
qt = {
enable = true;
style = "adwaita";
platformTheme = "gnome";
};
xdg.portal = { xdg.portal = {
enable = true; enable = true;
config.common.default = "*"; # TODO change for xdg-desktop-portal > 1.17 changes config.common.default = "*"; # TODO change for xdg-desktop-portal > 1.17 changes

View file

@ -1,8 +1,8 @@
[ [
{ {
"name": "Spotify", "name": "WhatsApp Web",
"url": "https://open.spotify.com", "url": "https://web.whatsapp.com/",
"tags": ["Music", "Streaming"] "tags": ["Social"]
}, },
{ {
"name": "ABRP", "name": "ABRP",
@ -12,7 +12,7 @@
{ {
"name": "Patreon", "name": "Patreon",
"url": "https://www.patreon.com/home", "url": "https://www.patreon.com/home",
"tags": ["Personal"] "tags": []
}, },
{ {
"name": "NHS App", "name": "NHS App",
@ -184,6 +184,11 @@
"url": "https://ukaea-ism.ivanticloud.com/Modules/SelfService/?NoDefaultProvider=True#home", "url": "https://ukaea-ism.ivanticloud.com/Modules/SelfService/?NoDefaultProvider=True#home",
"tags": ["Work"] "tags": ["Work"]
}, },
{
"name": "Marval",
"url": "https://marval.service.ukaea.uk/MSMSelfService/Index.aspx",
"tags": ["Work"]
},
{ {
"name": "U4BW", "name": "U4BW",
"url": "https://ubw.unit4cloud.com/uk_aea_prod_web/Login/Login.aspx", "url": "https://ubw.unit4cloud.com/uk_aea_prod_web/Login/Login.aspx",
@ -209,11 +214,21 @@
"url": "https://open.adas.ac.uk/", "url": "https://open.adas.ac.uk/",
"tags": ["Work"] "tags": ["Work"]
}, },
{
"name": "Homepage",
"url": "http://w3.jet.uk",
"tags": ["Work", "JET"]
},
{ {
"name": "Physics Summary", "name": "Physics Summary",
"url": "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php", "url": "https://users.euro-fusion.org/pages/physics-summary/LatestSession.php",
"tags": ["Work", "JET"] "tags": ["Work", "JET"]
}, },
{
"name": "JSPO Reports",
"url": "https://www.jspo.jet.uk/pages/operations/jpecreports_2023.html",
"tags": ["Work", "JET"]
},
{ {
"name": "DVCM Homepage", "name": "DVCM Homepage",
"url": "https://dvcm.jetdata.eu/", "url": "https://dvcm.jetdata.eu/",
@ -255,17 +270,17 @@
"tags": ["Work", "JET", "Mimic"] "tags": ["Work", "JET", "Mimic"]
}, },
{ {
"name": "MAST-U Users Page", "name": "Users Page",
"url": "https://users.mastu.ukaea.uk/home", "url": "https://users.mastu.ukaea.uk/home",
"tags": ["Work", "MAST-U"] "tags": ["Work", "MAST-U"]
}, },
{ {
"name": "MAST-U Diagnostic Handbook", "name": "Diagnostic Handbook",
"url": "https://intranet.ccfe.ac.uk/mastu-handbook", "url": "https://intranet.ccfe.ac.uk/mastu-handbook",
"tags": ["Work", "MAST-U"] "tags": ["Work", "MAST-U"]
}, },
{ {
"name": "MAST-U Data Access and Tools", "name": "Data Access and Tools",
"url": "https://users.mastu.ukaea.uk/data-access-and-tools", "url": "https://users.mastu.ukaea.uk/data-access-and-tools",
"tags": ["Work", "MAST-U"] "tags": ["Work", "MAST-U"]
}, },
@ -279,9 +294,14 @@
"url": "https://outlook.office.com/mail/ContactUs@lgbtqi.ukaea.uk/", "url": "https://outlook.office.com/mail/ContactUs@lgbtqi.ukaea.uk/",
"tags": ["Work", "Office", "Network", "LGBTQIA+"] "tags": ["Work", "Office", "Network", "LGBTQIA+"]
}, },
{
"name": "Teams",
"url": "https://teams.microsoft.com/v2",
"tags": ["Work", "Office"]
},
{ {
"name": "OneDrive", "name": "OneDrive",
"url": "https://ukaeauk-my.sharepoint.com/", "url": "https://ukaeauk-my.sharepoint.com/personal/evie_litherland-smith_ukaea_uk/",
"tags": ["Work", "Office"] "tags": ["Work", "Office"]
}, },
{ {

View file

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

View file

@ -1,6 +1,6 @@
{ config, pkgs, ... }: { pkgs, ... }:
{ {
stylix.targets.firefox.enable = false; stylix.targets.firefox.profileNames = [ "default" ];
programs = { programs = {
browserpass = { browserpass = {
enable = true; enable = true;
@ -15,7 +15,7 @@
BehaviorPrivateBrowsing = "reject"; BehaviorPrivateBrowsing = "reject";
Locked = true; Locked = true;
}; };
DefaultDownloadDirectory = config.xdg.userDirs.download; DefaultDownloadDirectory = "\${home}/Downloads";
DisableAppUpdate = true; DisableAppUpdate = true;
DisableFirefoxAccounts = true; DisableFirefoxAccounts = true;
DisableFirefoxScreenshots = true; DisableFirefoxScreenshots = true;
@ -109,8 +109,7 @@
ShowHomeButton = true; ShowHomeButton = true;
StartDownloadsInTempDirectory = true; StartDownloadsInTempDirectory = true;
}; };
profiles.user = { profiles.default = {
isDefault = true;
bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json); bookmarks = builtins.fromJSON (builtins.readFile ./bookmarks.json);
settings = { settings = {
"app.shield.optoutstudies.enabled" = false; "app.shield.optoutstudies.enabled" = false;
@ -148,10 +147,6 @@
title = "Arch Wiki"; title = "Arch Wiki";
url = "https://wiki.archlinux.org"; url = "https://wiki.archlinux.org";
} }
{
title = "Hyprland Wiki";
url = "https://wiki.hyprland.org";
}
]; ];
}; };
search = rec { search = rec {

View file

@ -6,7 +6,7 @@
"nyxt/config.lisp".text = "nyxt/config.lisp".text =
let let
fonts = config.stylix.fonts; fonts = config.stylix.fonts;
scheme = config.lib.stylix.scheme.withHashtag; scheme = config.lib.stylix.scheme;
in in
'' ''
;; Import custom configuration ;; Import custom configuration
@ -14,27 +14,27 @@
;; Define custom theme ;; Define custom theme
(define-configuration browser (define-configuration browser
((theme (make-instance 'theme:theme ((theme (make-instance 'theme:theme
:dark-p nil :dark-p t
:font-family "${fonts.sansSerif.name}" :font-family "${fonts.sansSerif.name}"
:monospace-font-family "${fonts.monospace.name}" :monospace-font-family "${fonts.monospace.name}"
:background-color "${scheme.base00}" :background-color "${scheme.withHashtag.base00}"
:on-background-color "${scheme.base05}" :on-background-color "${scheme.withHashtag.base05}"
:primary-color "${scheme.base02}" :primary-color "${scheme.withHashtag.base02}"
:on-primary-color "${scheme.base05}" :on-primary-color "${scheme.withHashtag.base05}"
:secondary-color "${scheme.base03}" :secondary-color "${scheme.withHashtag.base03}"
:on-secondary-color "${scheme.base05}" :on-secondary-color "${scheme.withHashtag.base05}"
:accent-color "${scheme.base0E}" :accent-color "${scheme.withHashtag.base0D}"
:on-accent-color "${scheme.base01}" :on-accent-color "${scheme.withHashtag.base01}"
:action-color "${scheme.cyan}" :action-color "${scheme.withHashtag.cyan}"
:on-action-color "${scheme.base01}" :on-action-color "${scheme.withHashtag.base01}"
:success-color "${scheme.green}" :success-color "${scheme.withHashtag.green}"
:on-success-color "${scheme.base01}" :on-success-color "${scheme.withHashtag.base01}"
:highlight-color "${scheme.magenta}" :highlight-color "${scheme.withHashtag.magenta}"
:on-highlight-color "${scheme.base01}" :on-highlight-color "${scheme.withHashtag.base01}"
:warning-color "${scheme.yellow}" :warning-color "${scheme.withHashtag.yellow}"
:on-warning-color "${scheme.base01}" :on-warning-color "${scheme.withHashtag.base01}"
:codeblock-color "${scheme.base02}" :codeblock-color "${scheme.withHashtag.base02}"
:on-codeblock-color "${scheme.base05}")))) :on-codeblock-color "${scheme.withHashtag.base05}"))))
''; '';
}; };
dataFile."nyxt/bookmarks.lisp".text = dataFile."nyxt/bookmarks.lisp".text =

View file

@ -1,9 +1,10 @@
{ ... }: { inputs, ... }:
{ {
imports = [ imports = [
inputs.nix-index-database.hmModules.nix-index
./shell/default.nix ./shell/default.nix
./services/password-store/default.nix
./scripts/default.nix ./scripts/default.nix
./password-store/default.nix
]; ];
programs.home-manager.enable = true; programs.home-manager.enable = true;
} }

71
system/home/desktop.nix Normal file
View file

@ -0,0 +1,71 @@
{ config, pkgs, ... }:
{
imports = [
./sway/default.nix
./emacs/default.nix
./browser/default.nix
./zathura/default.nix
./services/email/default.nix
];
home.packages = with pkgs; [
libreoffice-fresh
webcord
signal-desktop
teams-for-linux
];
services.syncthing.enable = true;
programs = {
mpv.enable = true;
alacritty = {
enable = true;
settings = {
shell = "${config.programs.fish.package}/bin/fish";
window = {
dynamic_title = true;
padding = {
x = 5;
y = 5;
};
};
live_config_reload = true;
selection.save_to_clipboard = true;
mouse.hide_when_typing = true;
};
};
};
xdg = {
mime.enable = true;
mimeApps =
let
defaultApplications = import ./mimeapps/default.nix;
in
{
enable = true;
inherit defaultApplications;
associations = {
added = defaultApplications;
removed = {
"x-scheme-handler/zoomus" = config.xdg.mimeApps.defaultApplications."x-scheme-handler/http";
};
};
};
userDirs = {
enable = true;
createDirectories = true;
extraConfig = {
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
};
};
configFile = {
"autostart/signal-desktop.desktop".source = "${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
"teams-for-linux/config.json".text = builtins.toJSON {
awayOnSystemIdle = true;
closeAppOnCross = true;
followSystemTheme = true;
notificationMethod = "electron";
optInTeamsV2 = true;
spellCheckerLanguages = [ "en_GB" ];
};
};
};
}

View file

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

View file

@ -1,73 +0,0 @@
{ config, pkgs, ... }:
{
programs = {
vdirsyncer.enable = true;
khal = {
enable = true;
locale = {
timeformat = "%H:%M";
dateformat = "%Y-%m-%d";
longdateformat = "%Y-%m-%d %a";
datetimeformat = "%Y-%m-%d %H:%M";
longdatetimeformat = "%Y-%m-%d %H:%M";
};
};
};
services.vdirsyncer = {
inherit (config.programs.vdirsyncer) enable package;
frequency = "*:0/30"; # Every 30 minutes
};
accounts.calendar = {
basePath = "Calendar";
accounts = {
main =
let
url = "dav.xenia.me.uk";
in
{
primary = true;
primaryCollection = "personal";
local = {
type = "filesystem";
fileExt = ".ics";
};
remote =
let
userName = "pixelifytica";
in
{
inherit userName;
url = "https://${url}";
type = "caldav";
passwordCommand = [
"${pkgs.libsecret}/bin/secret-tool"
"lookup"
"url"
"${url}"
"user"
"${userName}"
];
};
vdirsyncer = {
inherit (config.programs.vdirsyncer) enable;
auth = "basic";
collections = [
"personal"
"work"
"other"
];
metadata = [ "displayname" ];
timeRange = {
start = "datetime.now() - timedelta(days=365)";
end = "datetime.now() + timedelta(days=365)";
};
};
khal = {
inherit (config.programs.khal) enable;
type = "discover";
addresses = with config.accounts.email.accounts.proton; [ address ] ++ aliases;
};
};
};
};
}

View file

@ -1,94 +0,0 @@
{
config,
pkgs,
osConfig,
...
}:
{
imports = [
./hyprland.nix
./email/default.nix
./calendar/default.nix
./terminal/default.nix
./emacs/default.nix
./browser/default.nix
];
home = {
packages = with pkgs; [
wl-clipboard
libreoffice-fresh
evince
image-roll
clapper
g4music
ffmpeg
remmina
fractal
webcord
signal-desktop
whatsapp-for-linux
teams-for-linux
twinkle
];
file.${config.gtk.gtk2.configLocation}.force = true;
};
services = {
syncthing.enable = true;
gammastep = {
inherit (osConfig.location) latitude longitude provider;
enable = true;
tray = true;
};
};
gtk = {
enable = true;
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
iconTheme = {
package = (pkgs.papirus-icon-theme.override { color = "magenta"; });
name = "Papirus-Light";
};
};
stylix.targets.gtk.extraCss = with config.lib.stylix.scheme.withHashtag; ''
@define-color accent_color ${base0E-hex};
@define-color accent_bg_color ${base0E-hex};
'';
xdg = {
mime.enable = true;
mimeApps =
let
defaultApplications = import ./mimeapps.nix;
in
{
enable = true;
inherit defaultApplications;
associations.added = defaultApplications;
};
userDirs = {
enable = true;
createDirectories = true;
extraConfig = {
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
};
};
configFile = {
# Stop programs from overriding mimeapps
"mimeapps.list".force = true;
# Ensure GTK config is set
"gtk-3.0/gtk.css".force = true;
"gtk-3.0/settings.ini".force = true;
"gtk-4.0/gtk.css".force = true;
"gtk-4.0/settings.ini".force = true;
# Autostart some programs
"autostart/signal-desktop.desktop".source = "${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
"autostart/com.github.eneshecan.WhatsAppForLinux.desktop".source = "${pkgs.whatsapp-for-linux}/share/applications/com.github.eneshecan.WhatsAppForLinux.desktop";
"teams-for-linux/config.json".text = builtins.toJSON {
awayOnSystemIdle = true;
closeAppOnCross = false;
followSystemTheme = true;
notificationMethod = "electron";
optInTeamsV2 = true;
spellCheckerLanguages = [ "en_GB" ];
};
};
};
}

View file

@ -1,18 +0,0 @@
# UKAEA Beamer Style
This provides a Beamer theme for the default UKAEA branding. Subbrands
(CCFE, RACE, etc.) are not current available, but would not be
difficult to add.
For best results, it is recommended that you install the non-free
Latex fonts, as described here:
<https://www.tug.org/fonts/getnonfreefonts/>. However you will still
get perfectly acceptable results without them.
The file `ukaea-example.tex` is provided as a starting point for your
presentations. Simply rename and modify it as needed. You must either
keep your presentation TeX file in the same directory as the `.sty`
and image files or install those files on your system. If you wish to
do the latter, [follow these
instructions](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages#Installing_a_package)
starting from step 3.

View file

@ -1,50 +0,0 @@
\usepackage{xcolor}
\mode<presentation>
\definecolor{UkaeaCoreBlue}{RGB}{0,48,86}
\definecolor{UkaeaCoreWhite}{RGB}{255,255,255}
\definecolor{UkaeaCoreBlack}{RGB}{0,0,0}
\definecolor{UkaeaCoreGrey1}{RGB}{88,89,91}
\definecolor{UkaeaCoreGrey2}{RGB}{128,130,133}
\definecolor{UkaeaCoreGrey3}{RGB}{167,169,172}
\definecolor{UkaeaCoreGrey4}{RGB}{209,211,212}
\definecolor{UkaeaSecondaryYellow}{RGB}{246,212,77}
\definecolor{UkaeaSecondaryGreen}{RGB}{0,111,69}
\definecolor{UkaeaSecondaryBlue}{RGB}{0,130,202}
\definecolor{UkaeaSecondaryRed}{RGB}{201,37,44}
\definecolor{UkaeaSecondaryText}{RGB}{144,145,179}
\definecolor{CcfeOrange}{RGB}{248,151,29}
\definecolor{OasRed}{RGB}{230,62,48}
\definecolor{RaceSilver}{RGB}{191,196,217}
\definecolor{MrcGreen}{RGB}{5,206,124}
\setbeamercolor{headline}{bg=UkaeaCoreBlue}
\setbeamercolor{title page}{bg=UkaeaCoreBlue}
\setbeamercolor{title}{fg=UkaeaCoreWhite, bg=UkaeaCoreBlue}
\setbeamercolor{subtitle}{fg=UkaeaCoreWhite}
\setbeamercolor{author}{fg=UkaeaSecondaryText}
\setbeamercolor{date}{fg=UkaeaSecondaryText}
\setbeamercolor{institute}{fg=UkaeaSecondaryText}
\setbeamercolor{normal text}{fg=UkaeaCoreBlue}
\setbeamercolor{structure}{fg=UkaeaCoreBlue}
\setbeamercolor{frametitle}{fg=UkaeaCoreBlue}
\setbeamercolor{framesubtitle}{fg=UkaeaCoreBlue}
\setbeamercolor{alerted text}{fg=UkaeaSecondaryRed}
\setbeamercolor{block title}{fg=UkaeaCoreWhite, bg=UkaeaCoreBlue}
\setbeamercolor{block body}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaCoreBlue!10}
\setbeamercolor{block title example}{fg=UkaeaCoreWhite, bg=UkaeaSecondaryBlue}
\setbeamercolor{block body example}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaSecondaryBlue!10}
\setbeamercolor{block title alert}{fg=UkaeaCoreWhite, bg=UkaeaSecondaryRed}
\setbeamercolor{block body alert}{parent=normal text, fg=UkaeaCoreBlack, bg=UkaeaSecondaryRed!10}
\setbeamercolor{pagenumber}{fg=UkaeaCoreGrey3}
\mode<all>

View file

@ -1,24 +0,0 @@
% to use non-standard font
\usepackage{iftex}
\usepackage[T1]{fontenc}
\IfFileExists{uarial.sty}{
\usepackage{newtxsf, uarial, textcomp}
\usepackage[italic]{mathastext}
}{
\usepackage[scaled]{helvet}
}
\renewcommand\familydefault{\sfdefault}
\usepackage[scaled]{beramono}
\setbeamerfont{title}{family=\fontfamily{ugq}, size=\LARGE}
\setbeamerfont{subtitle}{family=\sffamily, series=\mdseries, size=\large}
\setbeamerfont{institute}{family=\fontfamily{ugq}, size=\Large}
\setbeamerfont{author}{family=\sffamily, series=\bfseries, size=\footnotesize}
\setbeamerfont{date}{family=\sffamily, series=\bfseries, size=\footnotesize}
\setbeamerfont{frametitle}{family=\fontfamily{ugq}, size=\LARGE}
\setbeamerfont{framesubtitle}{family=\sffamily, series=\mdseries, size=\Large}
\setbeamerfont{normal text}{family=\sffamily, series=\mdseries, size=\Large}

View file

@ -1,24 +0,0 @@
\mode<presentation>
\defbeamertemplate{itemize item}{circ}%
{\small\raise.2ex\hbox{$\bullet$}}
\defbeamertemplate{itemize subitem}{circ}%
{\small\raise.1ex\hbox{$\circ$}}
\defbeamertemplate{itemize subsubitem}{circ}%
{\scriptsize\raise.1ex\hbox{$\bullet$}}
\setbeamertemplate{items}[circ]
\setbeamertemplate{frametitle}
{
\nointerlineskip%
\vspace{4mm}\hspace{-8mm}
\begin{beamercolorbox}[wd=0.8\paperwidth]{frametitle}
\usebeamerfont{frametitle}{\insertframetitle}\par
\usebeamerfont{framesubtitle}{\usebeamercolor{framesubtitle}\insertframesubtitle}
\end{beamercolorbox}
}
\mode<all>

View file

@ -1,96 +0,0 @@
\usepackage{tikz}
\mode<presentation>
\DeclareOptionBeamer{logo}{\def\beamer@ukaea@logo{#1}}
\ExecuteOptionsBeamer{logo=ukaea_logo.png}
\DeclareOptionBeamer{extratitletext}{\def\beamer@ukaea@extratitletext{#1}}
\ExecuteOptionsBeamer{extratitletext=}
\ProcessOptionsBeamer
\newcommand{\ukaeatriangle}[1] {
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,0.2\paperwidth);
\node (t1) at (\paperwidth, 0.2\paperwidth) {};
\node (t2) at (0.8\paperwidth, 0.2\paperwidth) {};
\node (t3) at (\paperwidth, 0.) {};
\fill[fill=#1] (t1.center)--(t2.center)--(t3.center);
\if \beamer@ukaea@logo\@empty
\else
\node (logo) at (0.9415\paperwidth, 0.1415\paperwidth) {
\includegraphics[height=0.073\paperwidth]{\beamer@ukaea@logo}
};
\fi
\end{tikzpicture}
}
\setbeamertemplate{title page}
{%
\newdimen\title@graphic@height
\begin{minipage}[t]{\paperwidth}
\hspace*{-1cm}\inserttitlegraphic{}
\end{minipage}
\settoheight{\title@graphic@height}{\inserttitlegraphic{}}
\vspace*{-\title@graphic@height minus 0.004\paperheight}
\hspace*{-1cm}%
\begin{minipage}{\paperwidth}
\usebeamercolor[bg]{headline}
\ukaeatriangle{bg}\par
\end{minipage}
\vspace*{-2.59cm}
\hspace*{-1.085cm}
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\node (q1) at (0,0.54\paperheight) {};
\node (q2) at (\the\paperwidth,0.32\paperheight) {};
\node (q3) at (0,0) {};
\node (q4) at (\the\paperwidth,0) {};
\fill[fill=bg] (q1.center)--(q2.center)--(q4.center)--(q3.center);
\node[anchor=north west,text width=0.9\paperwidth] (titletext) at (0.4,0.44\paperheight) {
\usebeamerfont{institute}{\usebeamercolor[fg]{institute}\insertinstitute}\par
\smallskip
\usebeamerfont{title}{\usebeamercolor[fg]{title}\inserttitle}\par
\usebeamerfont{subtitle}{\usebeamercolor[fg]{subtitle}\insertsubtitle}\par
\bigskip
% \begin{minipage}{0.6\textwidth}
\usebeamercolor[fg]{date}{\usebeamerfont{date}\insertdate}\par
\usebeamercolor[fg]{author}{\usebeamerfont{author}\insertauthor}\par
% \end{minipage}
};
\node[anchor=south east,text width=0.45\paperwidth] (extratext) at
(1.28\paperwidth, 0.15) {
\usebeamercolor[fg]{title}
\usebeamerfont{main text}
\beamer@ukaea@extratitletext
};
\end{tikzpicture}
\addtocounter{framenumber}{-1}
}
\setbeamertemplate{headline}
{%\vspace{-0.07cm}\hspace{0.795\paperwidth}
\ukaeatriangle{bg}
\vspace{-0.2\paperwidth}
}
\setbeamertemplate{footline}
{
\leavevmode
\hbox{
\begin{beamercolorbox}[wd=1.0cm,ht=1.5cm,dp=0.3cm,right, rightskip=0.1cm]{pagenumber}%
\textbf{\large{\usebeamercolor[fg]{pagenumber}\insertframenumber{}}}
\end{beamercolorbox}
\usebeamercolor[fg]{normal text}{\textbf{\Large |} \raisebox{0.5ex}{\insertshorttitle}
}
}
}
\mode<all>
\endinput

View file

@ -1,24 +0,0 @@
\mode<presentation>
% Requirement
\RequirePackage{tikz}
\RequirePackage{xcolor}
% Options
\DeclareOptionBeamer{logo}{\PassOptionsToPackage{logo=#1}{beamerouterthemeukaea}}
\DeclareOptionBeamer{sponsors}{\PassOptionsToPackage{sponsors=#1}{beamerouterthemeukaea}}
\ProcessOptionsBeamer
% Settings
\useinnertheme{ukaea}
\useoutertheme{ukaea}
\usecolortheme{ukaea}
\usefonttheme{ukaea}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{blocks}[default]
%\setbeamertemplate{blocks}[rounded][shadow=true]
\titlegraphic{\includegraphics[width=\paperwidth]{ukaea-jet.jpg}}
\mode<all>

View file

@ -1,11 +0,0 @@
{ stdenvNoCC }:
stdenvNoCC.mkDerivation {
pname = "latex-beamer-ukaea";
version = "0.1";
src = ./.;
installPhase = ''
mkdir -p $out/tex/latex
cp -r $src/* $out/tex/latex
'';
tlType = "run";
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View file

@ -1,25 +0,0 @@
{ config, lib, ... }:
{
programs.fuzzel = {
enable = true;
settings = {
main = {
icon-theme = config.gtk.iconTheme.name;
icons-enabled = true;
fields = "filename,name,generic,categories";
fuzzy = true;
filter-desktop = true;
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
lines = 24;
width = 80;
tabs = 4;
layer = "overlay";
};
border = {
width = 1;
radius = 5;
};
colors.border = lib.mkForce "${config.lib.stylix.scheme.base0E}ff";
};
};
}

View file

@ -1,459 +0,0 @@
{
config,
lib,
pkgs,
osConfig,
...
}:
{
imports = [
./waybar.nix
./fuzzel.nix
./mako.nix
];
home.packages = [
(pkgs.writeShellScriptBin "protonmail-setup-bridge" ''
pkill -9 -f protonmail-bridge
PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -c
${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl dispatch exec "PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
'')
];
services = {
hyprpaper.enable = true;
kanshi.systemdTarget = "hyprland-session.target";
gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
avizo = {
enable = true;
settings.default = {
image-opacity = lib.mkForce "1.0";
border-color =
let
scheme = config.lib.stylix.scheme;
in
lib.mkForce "rgba(${scheme.base0E-rgb-r}, ${scheme.base0E-rgb-g}, ${scheme.base0E-rgb-b}, 1.0)";
};
};
kdeconnect = {
enable = true;
indicator = true;
};
udiskie = {
enable = true;
notify = true;
automount = true;
tray = "never";
};
hypridle = {
enable = true;
settings =
let
hyprctl = "${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl";
hyprlock = "${config.programs.hyprlock.package}/bin/hyprlock";
in
{
general = {
after_sleep_cmd = "${hyprctl} dispatch dpms on";
ignore_dbus_inhibit = false;
lock_cmd = "${hyprlock}";
};
listener = [
{
timeout = 900;
on-timeout = "${hyprlock}";
}
{
timeout = 1200;
on-timeout = "${hyprctl} dispatch dpms off";
on-resume = "${hyprctl} dispatch dpms on";
}
];
};
};
};
programs = {
waybar.systemd.target = "hyprland-session.target";
hyprlock =
let
font = config.stylix.fonts.sansSerif.name;
scheme = config.lib.stylix.scheme;
accent = scheme.base0E;
in
{
enable = true;
settings = {
general = {
hide_cursor = true;
grace = 5;
ignore_emptry_input = true;
};
background = [
{
monitor = "";
path = "screenshot";
blur_passes = 3;
blur_size = 8;
}
];
label = [
{
monitor = "";
text = "cmd[update:30000] echo \"$(date +\"%R\")\"";
color = "0xff${scheme.base00}";
font_size = 90;
font_family = font;
position = "-30, 0";
halign = "right";
valign = "top";
}
{
monitor = "";
text = "cmd[update:43200000] echo \"$(date +\"%A,%e %B %Y\")\"";
color = "0xff${scheme.base00}";
font_size = 25;
font_family = font;
position = "-30, -150";
halign = "right";
valign = "top";
}
];
image = [
{
monitor = "";
path = "${./pfp/personal.png}";
size = 100;
border_color = "0xff${accent}";
position = "0, 75";
halign = "center";
valign = "center";
}
];
input-field = [
{
monitor = "";
size = "300, 60";
outline_thickness = 2;
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true;
outer_color = "0xff${accent}";
inner_color = "0xff${scheme.base00}";
font_color = "0xff${scheme.base05}";
fade_on_empty = false;
placeholder_text = "󰌾 Logged in as <span foreground=\"##${accent}\">$USER</span>";
check_color = "0xff${scheme.blue}";
fail_color = "0xff${scheme.red}";
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
hide_input = false;
position = "0, -50";
halign = "center";
valign = "center";
}
];
};
};
};
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
systemd.enable = true;
settings = {
monitor = [ ",preferred,auto,auto" ];
env = [
"XDG_CURRENT_DESKTOP=Hyprland"
"XDG_SESSION_DESKTOP=Hyprland"
"GDK_BACKEND=wayland,x11"
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
"GRIM_DEFAULT_DIR,${config.xdg.userDirs.pictures}/Screenshots"
];
exec-once = [
"systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME"
"${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
"${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
"PASSWORD_STORE_DIR=/dev/null ${pkgs.protonmail-bridge}/bin/protonmail-bridge -n"
"sleep 5; ${pkgs.dex}/bin/dex -a"
];
gestures.workspace_swipe = true;
input = {
kb_layout = osConfig.services.xserver.xkb.layout;
follow_mouse = 1;
touchpad.natural_scroll = "yes";
};
dwindle = {
force_split = 2;
preserve_split = false;
smart_split = false;
smart_resizing = false;
special_scale_factor = 0.95;
no_gaps_when_only = 0;
use_active_for_splits = true;
default_split_ratio = 1.0;
};
master = {
allow_small_split = true;
special_scale_factor = 0.95;
mfact = 0.5;
# new_is_master = false;
new_on_top = false;
no_gaps_when_only = 0;
orientation = "left";
inherit_fullscreen = false;
smart_resizing = false;
drop_at_cursor = true;
};
general = {
"col.active_border" = lib.mkForce "rgb(${config.lib.stylix.scheme.magenta})";
gaps_in = 2.5;
gaps_out = 5;
border_size = 1;
# cursor_inactive_timeout = 0;
layout = "master";
};
decoration = {
rounding = 5;
"col.shadow" = lib.mkForce "rgba(${config.lib.stylix.scheme.base00}0d)";
drop_shadow = "yes";
shadow_ignore_window = true;
shadow_range = 4;
shadow_render_power = 3;
blur = {
enabled = true;
size = 5;
passes = 3;
new_optimizations = true;
brightness = 1.0;
noise = 2.0e-2;
};
};
animations = {
enabled = true;
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
animation = [
"windows, 1, 7, myBezier"
"windowsOut, 1, 7, default, popin 80%"
"border, 1, 10, default"
"borderangle, 1, 8, default"
"fade, 1, 7, default"
"workspaces, 1, 6, default"
];
};
misc = {
disable_splash_rendering = true;
disable_autoreload = true;
mouse_move_enables_dpms = true;
key_press_enables_dpms = true;
};
xwayland.force_zero_scaling = true;
layerrule =
let
blur = x: "blur, ^(${x})$";
ignorealpha = x: "ignorealpha 0.3, ^(${x})$";
layers = [
"system-menu"
"gtk-layer-shell"
"notifications"
"launcher"
"logout_dialog"
"waybar"
"avizo"
];
in
(lib.lists.forEach layers blur) ++ (lib.lists.forEach layers ignorealpha);
windowrule = [
# Float + move system windows
# Password prompts
"float, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
"center, 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"
"stayfocused, org.kde.polkit-kde-authentication-agent-1|Pinentry|pinentry-qt|gcr-prompter"
# Network and Bluetooth control panels
"float, pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
"size 800 600, pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
"move onscreen 100%-820 50,pavucontrol|.blueman-manager-wrapped|nm-connection-editor"
# File picker dialog
"float, xdg-desktop-portal-gtk"
"size 800 600, xdg-desktop-portal-gtk"
"center, xdg-desktop-portal-gtk"
# Workspace rules
"workspace 2, firefox" # Browser
"workspace 3, (libreoffice|soffice)(.*)" # Documents
"workspace 4, (signal|whatsapp-for-linux|WebCord|teams-for-linux)" # Messaging
"workspace 5, (org.remmina.Remmina|Nxplayer.bin)" # Remote Desktop
"workspace 6 silent, (steam|steam_app|lutris|page.kramo.Cartridges|org.prismlauncher.PrismLauncher)" # Gaming
# PrismLauncher / Minecraft
"float, org.prismlauncher.PrismLauncher"
"center, org.prismlauncher.PrismLauncher"
"size 800 600, org.prismlauncher.PrismLauncher"
];
windowrulev2 = [
# Firefox PIP
"float, title:Picture-in-Picture|Library,class:firefox"
"size 750 400, title:Picture-in-Picture,class:firefox"
"size 800 800, title:Library,class:firefox"
"move onscreen 100%-775 100%-425, title:Picture-in-Picture,class:firefox"
"center, title:Library,class:firefox"
"pin, title:Picture-in-Picture,class:firefox"
# NautilusPreviewer (Sushi)
"float, class:org.gnome.NautilusPreviewer"
"center, class:org.gnome.NautilusPreviewer"
# Electron file picker dialog
"float, title:Open Files,class:electron"
"size 800 600, title:Open Files,class:electron"
"center, title:Open Files,class:electron"
# Inhibit idle when watching videos
"idleinhibit fullscreen, class:firefox|com.github.rafostar.Clapper"
# Inhibit idle when playing games
"idleinhibit always, class:(steam_app|Minecraft).*"
# LibreOffice
"suppressevent fullscreen maximize, class:(libreoffice|soffice)(.*)"
"float, title:Open,class:(libreoffice|soffice)(.*)"
# Steam
"float, title:Friends List,class:steam"
"size 400 600, title:Friends List,class:steam"
"float, title:(.*)(Chat),class:steam"
"size 800 600, title:(.*)(Chat),class:steam"
"float, title:Steam Settings,class:steam"
"size 800 600, title:Steam Settings,class:steam"
"float, title:(.*)(Controller Layout),class:steam"
"size 1200 800, title:(.*)(Controller Layout),class:steam"
# Remmina / NoMachine
"suppressevent fullscreen maximize, class:org.remmina.Remmina|Nxplayer.bin"
"float, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
"center, title:Remmina Remote Desktop Client, class:org.remmina.Remmina"
];
bind =
let
withTerm =
{
term ? "alacritty",
package ? config.programs.${term}.package,
progname,
args ? "",
}:
"${package}/bin/${term} -T ${progname} -e ${progname} ${args}";
workspace = w: [
"SUPER, ${toString w}, moveworkspacetomonitor, ${toString w} current"
"SUPER, ${toString w}, workspace, ${toString w}"
"SUPER SHIFT, ${toString w}, movetoworkspace, ${toString w}"
];
in
lib.lists.flatten (lib.lists.forEach (lib.lists.range 1 9) workspace)
++ (
let
btm_args = "--autohide_time --battery --celsius --enable_cache_memory --enable_gpu_memory --group --hide_avg_cpu --hide_table_gap --retention=3m --show_table_scroll_position";
in
[
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Open Hyprland wiki at correct version number
"CTRL_SHIFT, H, exec, xdg-open \"https://wiki.hyprland.org/$(${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.swaylock.package}/bin/swaylock --screenshots --clock --indicator --grace-no-mouse"
"SUPER, Q, killactive,"
"SUPER, V, togglefloating"
# "SUPER SHIFT, V, setfloating" ## TODO setfloating exists
# in newer version of Hyprland than mine
"SUPER SHIFT, V, moveactive, exact 1% 4%"
"SUPER SHIFT, V, resizeactive, exact 800 600"
"SUPER SHIFT, V, pin"
"SUPER, M, fullscreen, 1" # Maximise window
"SUPER SHIFT, M, fullscreen, 0" # Actual fullscreen
"SUPER, Z, exec, ${config.services.mako.package}/bin/makoctl restore"
"SUPER SHIFT, Z, exec, exec ${config.services.mako.package}/bin/makoctl dismiss -a"
# Common program shortcuts
"SUPER, Space, exec, ${config.programs.fuzzel.package}/bin/fuzzel"
"SUPER, Return, exec, ${config.programs.alacritty.package}/bin/alacritty"
"SUPER SHIFT, Return, exec, ${config.programs.emacs.finalPackage}/bin/emacsclient -c"
"SUPER, W, exec, ${config.programs.firefox.finalPackage}/bin/firefox"
"SUPER, F, exec, ${pkgs.gnome.nautilus}/bin/nautilus"
# Terminal utilities
"SUPER, S, exec, ${
withTerm {
progname = "${config.programs.bottom.package}/bin/btm";
args = btm_args;
}
}"
"SUPER SHIFT, S, exec, ${
withTerm {
progname = "${config.programs.bottom.package}/bin/btm";
args = btm_args + " --basic";
}
}"
"SUPER, C, exec, ${withTerm { progname = "${config.programs.cava.package}/bin/cava"; }}"
# Misc useful binds
",Print,exec,${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -"
# ",XF86Calculator,exec,pkill rofi || ${config.programs.rofi.finalPackage}/bin/rofi -show calc"
# Movement binds
"SUPER, H, movefocus, l"
"SUPER, L, movefocus, r"
"SUPER, K, movefocus, u"
"SUPER, J, movefocus, d"
"SUPER SHIFT, H, movewindow, l"
"SUPER SHIFT, L, movewindow, r"
"SUPER SHIFT, K, movewindow, u"
"SUPER SHIFT, J, movewindow, d"
# Special workspaces
"SUPER, comma, workspace, m-1"
"SUPER SHIFT, comma, movetoworkspace, r-1"
"SUPER, period, workspace, m+1"
"SUPER SHIFT, period, movetoworkspace, r+1"
"SUPER, N, workspace, empty"
"SUPER SHIFT, N, movetoworkspace, empty"
"SUPER, minus, togglespecialworkspace"
"SUPER SHIFT, minus, movetoworkspace, special"
"SUPER, bracketright, focusmonitor, +1"
"SUPER SHIFT, bracketright, movecurrentworkspacetomonitor, +1"
"SUPER, bracketleft, focusmonitor, -1"
"SUPER SHIFT, bracketleft, movecurrentworkspacetomonitor, -1"
"SUPER, O, focusurgentorlast"
]
);
bindl = [
# Sound
",XF86AudioMute,exec,${config.services.avizo.package}/bin/volumectl %"
",XF86AudioMicMute,exec,${config.services.avizo.package}/bin/volumectl -m %"
# Playback
",XF86AudioPlay,exec,${pkgs.playerctl}/bin/playerctl play-pause"
",XF86AudioStop,exec,${pkgs.playerctl}/bin/playerctl play-pause"
",XF86AudioPrev,exec,${pkgs.playerctl}/bin/playerctl previous"
",XF86AudioNext,exec,${pkgs.playerctl}/bin/playerctl next"
];
bindle = [
# Sound
",XF86AudioRaiseVolume,exec,${config.services.avizo.package}/bin/volumectl -u + 5"
",XF86AudioLowerVolume,exec,${config.services.avizo.package}/bin/volumectl -u - 5"
# Brightness
",XF86MonBrightnessUp,exec,${config.services.avizo.package}/bin/lightctl + 5"
",XF86MonBrightnessDown,exec,${config.services.avizo.package}/bin/lightctl - 5"
];
bindm = [
# Move/resize windows with mainMod + LMB/RMB and dragging
"SUPER, mouse:272, movewindow"
"SUPER, mouse:273, resizewindow"
];
};
};
xdg.configFile."hypr/hyprpaper.conf".text = ''
preload = ${config.stylix.image}
wallpaper = ,${config.stylix.image}
'';
}

View file

@ -1,18 +0,0 @@
{ config, lib, ... }:
{
services.mako = {
enable = true;
anchor = "top-right";
width = 600;
height = 600;
layer = "top";
markup = true;
maxVisible = 10;
icons = true;
iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}";
borderRadius = 5;
borderSize = 1;
borderColor = lib.mkForce config.lib.stylix.scheme.withHashtag.base0E;
defaultTimeout = (builtins.mul 5 1000); # 5s timeout
};
}

View file

@ -1,19 +0,0 @@
{ config, ... }:
{
programs.alacritty = {
enable = true;
settings = {
shell = "${config.programs.zsh.package}/bin/zsh";
window = {
dynamic_title = true;
padding = {
x = 5;
y = 5;
};
};
live_config_reload = true;
selection.save_to_clipboard = true;
mouse.hide_when_typing = true;
};
};
}

View file

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

View file

@ -1,10 +1,6 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
imports = [ imports = [ ../shell/default.nix ];
../../shell/default.nix
../../shell/git.nix
../../gpg/default.nix
];
stylix.targets.emacs.enable = false; stylix.targets.emacs.enable = false;
services.emacs = { services.emacs = {
enable = true; enable = true;
@ -16,6 +12,7 @@
}; };
programs.emacs = { programs.emacs = {
# Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git # Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git
# git clone https://git.xenia.me.uk/pixelifytica/emacs.git ~/.emacs.d
enable = true; enable = true;
package = pkgs.emacs29-pgtk; package = pkgs.emacs29-pgtk;
extraConfig = extraConfig =
@ -88,9 +85,7 @@
hyperref hyperref
capt-of capt-of
listings listings
bera
; ;
latex-beamer-ukaea.pkgs = [ (callPackage ./texlive/latex-beamer-ukaea/default.nix { }) ];
}) })
# Development tools # Development tools
@ -98,23 +93,25 @@
silicon silicon
## Python Environments ## Python Environments
uv
poetry poetry
## Linters ## Linters
shellcheck shellcheck
yamllint yamllint
ruff ruff
nodePackages.eslint
## Formatters ## Formatters
nixfmt-rfc-style nixfmt-rfc-style
shfmt shfmt
stylua stylua
nodePackages.prettier nodePackages.prettier
nodePackages.prettier-plugin-toml
## Language servers ## Language servers
nixd nixd
lua-language-server lua-language-server
nodePackages.typescript-language-server
## Interpreters ## Interpreters
(python3.withPackages ( (python3.withPackages (

View file

@ -1,8 +0,0 @@
{ lib, pkgs, ... }:
{
programs.gpg.enable = true;
services.gpg-agent = {
enable = true;
pinentryPackage = lib.mkDefault pkgs.pinentry-all;
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View file

@ -0,0 +1,13 @@
lib: string:
with lib;
let
chars =
let
lc = strings.splitString "" string;
in
(lists.sublist 1 (lists.length lc - 2) lc);
in
(strings.concatStringsSep "" (
(lists.singleton (strings.toUpper (lists.elemAt chars 0)))
++ (lists.sublist 1 (lists.length chars) chars)
))

View file

@ -3,12 +3,12 @@ let
browser = [ "firefox.desktop" ]; browser = [ "firefox.desktop" ];
in in
{ {
"inode/directory" = [ "org.gnome.Nautilus.desktop" ]; "inode/directory" = [ "thunar.desktop" ];
"inode/symlink" = [ "org.gnome.Nautilus.desktop" ]; "inode/symlink" = [ "thunar.desktop" ];
"image/jpeg" = [ "com.github.weclaw1.ImageRoll.desktop" ]; "image/jpeg" = [ "swayimg.desktop" ];
"image/png" = [ "com.github.weclaw1.ImageRoll.desktop" ]; "image/png" = [ "swayimg.desktop" ];
"video/mp4" = [ "com.github.rafostar.Clapper.desktop" ]; "video/mp4" = [ "mpv.desktop" ];
"text/plain" = emacs; "text/plain" = emacs;
"text/richtext" = emacs; "text/richtext" = emacs;
@ -16,9 +16,9 @@ in
"text/markdown" = emacs; "text/markdown" = emacs;
"text/rust" = emacs; "text/rust" = emacs;
"text/csv" = emacs; "text/csv" = emacs;
"text/html" = emacs;
"text/css" = emacs; "text/css" = emacs;
"text/tab-separated-values" = emacs; "text/tab-separated-values" = emacs;
"text/html" = browser;
"text/x-emacs-lisp" = emacs; "text/x-emacs-lisp" = emacs;
"text/x-fortran" = emacs; "text/x-fortran" = emacs;
@ -41,21 +41,22 @@ in
"application/rss+xml" = emacs; "application/rss+xml" = emacs;
"application/xhtml+xml" = emacs; "application/xhtml+xml" = emacs;
"application/oxps" = emacs; "application/oxps" = emacs;
"application/zip" = [ "org.gnome.FileRoller.desktop" ];
"application/pdf" = [ "org.gnome.Evince.desktop" ];
"application/epub+zip" = [ "org.gnome.Evince.desktop" ];
"application/msword" = [ "writer.desktop" ];
"application/x-shellscript" = emacs; "application/x-shellscript" = emacs;
"application/x-docbook+xml" = emacs; "application/x-docbook+xml" = emacs;
"application/x-yaml" = emacs; "application/x-yaml" = emacs;
"application/x-archive" = [ "org.gnome.FileRoller.desktop" ];
"application/pdf" = [ "org.pwmt.zathura.desktop" ];
"application/epub+zip" = [ "org.pwmt.zathura.desktop" ];
"application/msword" = [ "writer.desktop" ];
"application/zip" = [ "xarchiver.desktop" ];
"application/x-extension-htm" = browser; "application/x-extension-htm" = browser;
"application/x-extension-html" = browser; "application/x-extension-html" = browser;
"application/x-extension-shtml" = browser; "application/x-extension-shtml" = browser;
"application/x-extension-xhtml" = browser; "application/x-extension-xhtml" = browser;
"application/x-extension-xht" = browser; "application/x-extension-xht" = browser;
"application/x-mozilla-bookmarks" = browser; "application/x-mozilla-bookmarks" = browser;
"application/x-zoom" = browser; "application/x-zoom" = [ "Zoom.desktop" ] ++ browser;
"x-scheme-handler/http" = browser; "x-scheme-handler/http" = browser;
"x-scheme-handler/https" = browser; "x-scheme-handler/https" = browser;

View file

@ -1,18 +0,0 @@
{ config, pkgs, ... }:
{
imports = [
../gpg/default.nix
../shell/git.nix
];
programs = {
gpg.enable = true;
password-store = {
enable = true;
package = pkgs.pass-nodmenu.withExtensions (exts: with exts; [ pass-update ]);
settings = {
PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store";
PASSWORD_STORE_ENABLE_EXTENSIONS = "true";
};
};
};
}

View file

@ -1,31 +1,39 @@
{ {
config, config,
lib,
pkgs, pkgs,
inputs,
osConfig,
... ...
}: }:
{ {
stylix.targets.kde.enable = false; imports = [ ./konsole.nix ];
imports = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
home.packages = with pkgs; [ home.packages = with pkgs; [
protonmail-bridge-gui
libreoffice-qt-fresh
rc2nix rc2nix
wl-clipboard wl-clipboard
(papirus-icon-theme.override { color = "violet"; })
]; ];
services.gpg-agent.pinentryPackage = pkgs.pinentry-qt; services.gpg-agent.pinentryPackage = pkgs.pinentry-qt;
programs.plasma = { programs.plasma = {
enable = true; enable = true;
overrideConfig = true; overrideConfig = true;
workspace = { workspace =
iconTheme = config.gtk.iconTheme.name; let
toCapital = import ../lib/to_capital.nix lib;
in
{
clickItemTo = "open";
theme = "default";
colorScheme = "Breeze${toCapital config.lib.stylix.scheme.variant}";
iconTheme = "Papirus-${toCapital config.lib.stylix.scheme.variant}";
windowDecorations = {
library = "org.kde.breeze";
theme = "Breeze";
};
cursor = { cursor = {
inherit (config.home.pointerCursor) size; inherit (config.home.pointerCursor) size;
theme = config.home.pointerCursor.name; theme = config.home.pointerCursor.name;
}; };
wallpaper = config.stylix.image; wallpaper = "${../wallpapers/landscapes/tropic_island_day.jpg}";
}; };
fonts = fonts =
@ -51,11 +59,6 @@
}; };
hotkeys.commands = { hotkeys.commands = {
"launch-alacritty" = {
name = "Launch Alacritty terminal emulator";
key = "Ctrl+Alt+T";
command = "alacritty";
};
"launch-emacs" = { "launch-emacs" = {
name = "Launch Emacs Client Window"; name = "Launch Emacs Client Window";
key = "Meta+Alt+X"; key = "Meta+Alt+X";
@ -71,7 +74,6 @@
alignment = "center"; alignment = "center";
hiding = "normalpanel"; hiding = "normalpanel";
floating = true; floating = true;
screen = "all";
widgets = [ widgets = [
{ {
name = "org.kde.plasma.kicker"; name = "org.kde.plasma.kicker";
@ -87,15 +89,6 @@
}; };
} }
"org.kde.plasma.marginsseparator" "org.kde.plasma.marginsseparator"
{
name = "org.kde.plasma.pager";
config.General = {
showWindowIcons = "true";
showOnlyCurrentScreen = "false";
wrapPage = "true";
};
}
"org.kde.plasma.panelspacer"
{ {
name = "org.kde.plasma.icontasks"; name = "org.kde.plasma.icontasks";
config.General = { config.General = {
@ -103,20 +96,20 @@
showToolTips = "true"; showToolTips = "true";
launchers = [ launchers = [
"preferred://filemanager" "preferred://filemanager"
"preferred://browser"
"applications:emacs.desktop" "applications:emacs.desktop"
"applications:Alacritty.desktop"
"applications:writer.desktop"
"applications:calc.desktop"
"applications:impress.desktop"
"applications:org.kde.okular.desktop"
"applications:org.kde.elisa.desktop"
"applications:org.kde.plasma-systemmonitor.desktop"
"applications:systemsettings.desktop"
]; ];
}; };
} }
"org.kde.plasma.panelspacer" "org.kde.plasma.panelspacer"
{
name = "org.kde.plasma.pager";
config.General = {
showWindowIcons = "true";
showOnlyCurrentScreen = "false";
wrapPage = "true";
};
}
"org.kde.plasma.panelspacer"
"org.kde.plasma.marginsseparator" "org.kde.plasma.marginsseparator"
"org.kde.plasma.keyboardindicator" "org.kde.plasma.keyboardindicator"
"org.kde.plasma.cameraindicator" "org.kde.plasma.cameraindicator"
@ -175,7 +168,6 @@
"InvertWindow" = "Meta+Ctrl+U"; "InvertWindow" = "Meta+Ctrl+U";
"Invert Screen Colors" = [ ]; "Invert Screen Colors" = [ ];
}; };
"services/org.kde.konsole.desktop"."_launch" = [ ];
"services/org.kde.krunner.desktop"."_launch" = [ "services/org.kde.krunner.desktop"."_launch" = [
"Meta+Space" "Meta+Space"
"Search" "Search"
@ -211,7 +203,7 @@
}; };
dimDisplay = { dimDisplay = {
enable = true; enable = true;
# idleTimeOut = 300; idleTimeOut = 300;
}; };
turnOffDisplay = { turnOffDisplay = {
idleTimeout = 1800; idleTimeout = 1800;
@ -226,7 +218,7 @@
}; };
dimDisplay = { dimDisplay = {
enable = true; enable = true;
# idleTimeOut = 120; idleTimeOut = 120;
}; };
turnOffDisplay = { turnOffDisplay = {
idleTimeout = 300; idleTimeout = 300;
@ -241,7 +233,7 @@
}; };
dimDisplay = { dimDisplay = {
enable = true; enable = true;
# idleTimeOut = 60; idleTimeOut = 60;
}; };
turnOffDisplay = { turnOffDisplay = {
idleTimeout = 120; idleTimeout = 120;
@ -252,8 +244,18 @@
configFile = { configFile = {
baloofilerc."Basic Settings"."Indexing-Enabled" = false; baloofilerc."Basic Settings"."Indexing-Enabled" = false;
kwalletrc."org.freedesktop.secrets".apiEnabled = true;
kcminputrc.Keyboard.NumLock = 1; kcminputrc.Keyboard.NumLock = 1;
yakuakerc = {
Dialogs.FirstRun = false;
Window = {
DynamicTabTitles = true;
Height = 80;
Width = 80;
KeepOpen = true;
ShowSystrayIcon = false;
ShowTitleBar = false;
};
};
plasmanotifyrc = { plasmanotifyrc = {
Notifications = { Notifications = {
NormalAlwaysOnTop = true; NormalAlwaysOnTop = true;
@ -282,17 +284,17 @@
let let
AccentColor = AccentColor =
let let
r = config.lib.stylix.scheme."base0E-rgb-r"; r = config.lib.stylix.scheme."base0D-rgb-r";
g = config.lib.stylix.scheme."base0E-rgb-g"; g = config.lib.stylix.scheme."base0D-rgb-g";
b = config.lib.stylix.scheme."base0E-rgb-b"; b = config.lib.stylix.scheme."base0D-rgb-b";
in in
"${r}, ${g}, ${b}"; "${r}, ${g}, ${b}";
in in
{ {
inherit AccentColor; inherit AccentColor;
LastUsedCustomAccentColor = AccentColor; LastUsedCustomAccentColor = AccentColor;
TerminalApplication = "alacritty"; TerminalApplication = "konsole";
TerminalService = "Alacritty.desktop"; TerminalService = "org.kde.konsole.desktop";
}; };
WM = { WM = {
# TODO convert to base16 colours at some point # TODO convert to base16 colours at some point
@ -339,10 +341,12 @@
NightColor = { NightColor = {
Active = true; Active = true;
Mode = "Location"; Mode = "Location";
LatitudeFixed = "${osConfig.location.latitude}"; LatitudeFixed = "51.7";
LongitudeFixed = "${osConfig.location.longitude}"; LongitudeFixed = "-1.2";
}; };
"Effect-translucency" = { "Effect-translucency" = {
# Re-enable translucency when I can work out how to apply
# blur to all windows
Inactive = 100; Inactive = 100;
MoveResize = 100; MoveResize = 100;
Dialogs = 100; Dialogs = 100;
@ -353,8 +357,16 @@
BorderSize = "None"; BorderSize = "None";
BorderSizeAuto = "false"; BorderSizeAuto = "false";
}; };
"Script-krohnkite" = {
limitTileWidth = true;
screenGapBottom = 5;
screenGapLeft = 5;
screenGapRight = 5;
screenGapTop = 5;
tileLayoutGap = 5;
}; };
}; };
}; };
xdg.configFile."autostart/proton-bridge-gui.desktop".source = "${pkgs.protonmail-bridge-gui}/share/applications/proton-bridge-gui.desktop"; };
xdg.configFile."autostart/org.kde.yakuake.desktop".source = "${pkgs.yakuake}/share/applications/org.kde.yakuake.desktop";
} }

View file

@ -0,0 +1,15 @@
# sudo pacman -S git frameworkintegration gcc-libs glibc kcmutils kcolorscheme kconfig kcoreaddons kdecoration kguiaddons ki18n kiconthemes kirigami kwidgetsaddons kwindowsystem qt6-base qt6-declarative qt6-svg xdg-utils extra-cmake-modules kcmutils5 frameworkintegration5 kconfigwidgets5 kiconthemes5 kirigami2 kwindowsystem5
{ mkDerivation, fetchFromGithub }:
let
pname = "klassy";
version = "6.1.breeze6.0.3";
in
mkDerivation {
inherit pname version;
src = fetchFromGithub {
owner = "paulmcauley";
repo = pname;
rev = version;
hash = "";
};
}

View file

@ -0,0 +1,42 @@
{ config, pkgs, ... }:
{
home.packages = [ pkgs.yakuake ];
programs.konsole = {
enable = true;
defaultProfile = "One-Light";
customColorSchemes.onelight = ./onelight.colorscheme;
profiles.onelight = {
name = "One-Light";
colorScheme = "onelight";
command = "${config.programs.fish.package}/bin/fish";
font = {
inherit (config.stylix.fonts.monospace) name;
size = config.stylix.fonts.sizes.terminal;
};
extraConfig = {
"Interaction Options" = {
TextEditorCmd = 6;
TextEditorCmdCustom = "emacsclient -c +LINE:COLUMN PATH";
UnderlineFilesEnabled = true;
OpenLinksByDirectClickEnabled = true;
};
"Terminal Features" = {
BlinkingCursorEnabled = true;
VerticalLine = false;
};
};
};
extraConfig = {
MainWindow = {
MenuBar = "Disabled";
};
TabBar = {
ExpandTabWidth = true;
NewTabButton = true;
};
ThumbnailsSettings = {
ThumbnailAlt = true;
};
};
};
}

View file

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
home.packages = [
(pkgs.libsForQt5.krohnkite.overrideAttrs (
final: prev:
let
version = "0.9.7";
in
{
inherit version;
src = pkgs.fetchFromGitHub {
owner = "anametologin";
repo = "krohnkite";
rev = version;
hash = "sha256-8A3zW5tK8jK9fSxYx28b8uXGsvxEoUYybU0GaMD2LNw=";
};
}
))
];
}

View file

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

View file

@ -1,11 +1,15 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
home.packages = [ home = {
(pkgs.writeShellScriptBin "sync-git" (builtins.readFile ./shell/sync-git.sh)) packages = [
(pkgs.writeShellScriptBin "sync-emacs" (builtins.readFile ./shell/sync-emacs.sh)) (pkgs.writeShellScriptBin "esync" (builtins.readFile ./shell/esync.sh))
(pkgs.writeShellScriptBin "ensure-pass" (builtins.readFile ./shell/ensure-pass.sh)) (pkgs.writeShellScriptBin "git-sync-all" (builtins.readFile ./shell/git-sync-all.sh))
(pkgs.writeShellScriptBin "clean-config" (builtins.readFile ./shell/clean-config.sh))
(pkgs.writeShellScriptBin "rsync-local-config" (builtins.readFile ./shell/rsync-local-config.sh)) (pkgs.writeShellScriptBin "rsync-local-config" (builtins.readFile ./shell/rsync-local-config.sh))
(pkgs.writeShellScriptBin "xdg-query-program" (builtins.readFile ./shell/xdg-query-program.sh)) (pkgs.writeShellScriptBin "xdg-query-program" (builtins.readFile ./shell/xdg-query-program.sh))
]; ];
shellAliases = {
gsa = "git-sync-all";
gsad = "git-sync-all && shutdown now";
};
};
} }

View file

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

View file

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

View file

@ -1,2 +0,0 @@
shopt -s extglob
rm -rf ~/.config/!(dconf|kdeconnect|protonmail|Signal|WebCord|whatsapp-for-linux)

View file

@ -1,38 +0,0 @@
# Email
EMAIL="e.litherlandsmith@proton.me"
secret-tool lookup email "$EMAIL" >/dev/null || (
echo "Insert pass from protonmail-bridge"
secret-tool store --label="Proton Mail mbsync" email "$EMAIL"
)
EMAIL="e.litherlandsmith@icloud.com"
secret-tool lookup email "$EMAIL" >/dev/null || (
pass show identity/apple.com/mbsync |
head -n1 |
secret-tool store --label="iCloud mbsync" email "$EMAIL"
)
EMAIL="evie.litherland-smith@ukaea.uk"
secret-tool lookup email "$EMAIL" >/dev/null || (
pass show work/microsoftonline.com |
head -n1 |
secret-tool store --label="Outlook mbsync" email "$EMAIL"
)
# Calendar
URL="dav.xenia.me.uk"
USER="pixelifytica"
secret-tool lookup url "$URL" user "$USER" >/dev/null || (
pass show "server/xenia.me.uk/$URL" |
head -n1 |
secret-tool store --label="Personal calendar vdirsyncer" url "$URL" user "$USER"
)
# GitHub API token
HOST="api.github.com"
USER="pixelifytica^forge"
secret-tool lookup host "$HOST" user "$USER" >/dev/null || (
pass show "api/$HOST" |
head -n1 |
secret-tool store --label="Forge GitHub Token" host "$HOST" user "$USER"
)

View file

@ -1,5 +1,5 @@
# Clone ~/.config/emacs/ if it doesn't exist # Clone ~/.config/emacs/ if it doesn't exist
EMACS_DIR="$HOME/.emacs.d" EMACS_DIR="${XDG_CONFIG_DIR:=$HOME/.config}/emacs/"
if [ ! -d "$EMACS_DIR" ]; then if [ ! -d "$EMACS_DIR" ]; then
git clone "https://git.xenia.me.uk/pixelifytica/emacs.git" "$EMACS_DIR" git clone "https://git.xenia.me.uk/pixelifytica/emacs.git" "$EMACS_DIR"
fi fi

View file

@ -0,0 +1,4 @@
battery_level=$(acpi -b | grep -P -o '[0-9]+(?=%)')
if [ "$battery_level" -le 20 ]; then
notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
fi

View file

@ -1,6 +1,6 @@
HOSTS=("$@") HOSTS=("$@")
# Config files # Config files
for TARGET in ".inputrc" ".config/starship.toml"; do for TARGET in ".inputrc" ".config/bat/" ".config/zellij" ".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
@ -21,3 +21,13 @@ for TARGET in ".inputrc" ".config/starship.toml"; do
rm -rf $TMP_SOURCE rm -rf $TMP_SOURCE
fi fi
done done
# Fonts
IOSEVKA_FLAKE_URL="git+https://git.xenia.me.uk/pixelifytica/iosevka.git?ref=main"
IOSEVKA_CUSTOM_NERDFONT=$(nix path-info "$IOSEVKA_FLAKE_URL#packages.x86_64-linux.iosevka-custom-nerdfont")
IOSEVKA_CUSTOM_AILE=$(nix path-info "$IOSEVKA_FLAKE_URL#packages.x86_64-linux.iosevka-custom-aile")
echo "--- Fonts ---"
for HOST in "${HOSTS[@]}"; do
rsync -avzL --delete --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$IOSEVKA_CUSTOM_NERDFONT/share/fonts/truetype/" "$HOST:.fonts/IosevkaCustomNerdFont"
rsync -avzL --delete --exclude=".git*" --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r "$IOSEVKA_CUSTOM_AILE/share/fonts/truetype/" "$HOST:.fonts/IosevkaCustomAile"
done

View file

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

View file

@ -1,6 +1,7 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
home.packages = [ home.packages = [
(pkgs.writeShellScriptBin "mbsync-ensure-pass" (builtins.readFile ./mbsync-ensure-pass.sh))
(pkgs.writeShellScriptBin "davmail-setup" '' (pkgs.writeShellScriptBin "davmail-setup" ''
systemctl --user restart davmail # Ensure config file is present systemctl --user restart davmail # Ensure config file is present
systemctl --user stop davmail systemctl --user stop davmail
@ -151,7 +152,7 @@
}; };
services.mbsync = { services.mbsync = {
inherit (config.programs.mbsync) enable package; inherit (config.programs.mbsync) enable package;
frequency = "*:0/30"; # Every 30 minutes frequency = "*:0/5"; # Every 5 minutes
verbose = true; verbose = true;
preExec = null; preExec = null;
postExec = null; postExec = null;

View file

@ -0,0 +1,15 @@
EMAIL_ADDRESSES=(
e.litherlandsmith@proton.me
e.litherlandsmith@icloud.com
evie.litherland-smith@ukaea.uk
)
LABELS=("Proton" "iCloud" "Outlook")
for i in "${!EMAIL_ADDRESSES[@]}"; do
ADDRESS="${EMAIL_ADDRESSES[$i]}"
LABEL="${LABELS[$i]}"
secret-tool lookup email "$ADDRESS" >/dev/null || (
echo "Setup $LABEL"
secret-tool store --label="$LABEL mail mbsync" email "$ADDRESS"
)
done

View file

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

View file

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

View file

@ -1,31 +0,0 @@
{ config, ... }:
{
programs.bottom = {
enable = true;
settings = {
flags = {
group_processes = true;
temperature_type = "celsius";
battery = true;
enable_gpu = true;
enable_cache_memory = true;
};
colors =
let
scheme = config.lib.stylix.scheme.withHashtag;
rainbow = with scheme; [
red
yellow
green
cyan
blue
magenta
];
in
{
cpu_core_colors = rainbow;
gpu_core_colors = rainbow;
};
};
};
}

View file

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

View file

@ -1,28 +1,59 @@
{ config, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = [ imports = [
./git.nix ./git.nix
./ssh.nix ./ssh.nix
./starship.nix ./starship.nix
./bottom.nix
./cava.nix
]; ];
home.shellAliases = { home.packages = with pkgs; [
sync-all = "sync-git; vdirsyncer sync; mbsync -a"; rclone
sync-and-shutdown = "sync-all && shutdown now"; git-sync
protonup = "sudo wg-quick up protonvpn && sudo wg"; du-dust
protondown = "sudo wg-quick down protonvpn"; ];
};
programs = { programs = {
bash.enable = true; bash.enable = true;
carapace.enable = true; fastfetch.enable = true;
fish.enable = true;
fd.enable = true; fd.enable = true;
jq.enable = true; jq.enable = true;
nix-index.enable = true;
ripgrep.enable = true; ripgrep.enable = true;
bat = { bat = {
enable = true; enable = true;
config.style = "plain,numbers,changes"; config.style = "plain,numbers,changes";
}; };
bottom = {
enable = true;
settings = {
flags = {
group_processes = true;
temperature_type = "celsius";
battery = true;
enable_gpu = true;
enable_cache_memory = true;
};
colors =
let
rainbow = with config.lib.stylix.scheme.withHashtag; [
red
yellow
green
cyan
blue
magenta
];
in
{
cpu_core_colors = rainbow;
gpu_core_colors = rainbow;
};
};
};
direnv = { direnv = {
enable = true; enable = true;
nix-direnv.enable = true; nix-direnv.enable = true;
@ -39,18 +70,6 @@
changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d"; changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d";
fileWidgetCommand = "${pkgs.fd}/bin/fd --type f"; fileWidgetCommand = "${pkgs.fd}/bin/fd --type f";
}; };
hyfetch = {
enable = true;
settings = {
preset = "rainbow";
mode = "rgb";
light_dark = config.stylix.polarity;
lightness = 0.4;
color_align = {
mode = "horizontal";
};
};
};
readline = { readline = {
enable = true; enable = true;
variables = { variables = {
@ -68,6 +87,15 @@
visible-stats = "On"; visible-stats = "On";
}; };
}; };
zellij = {
enable = true;
settings = {
default_mode = "locked";
mouse_mode = true;
copy_command = lib.mkIf config.wayland.windowManager.sway.enable "wl-copy";
copy_on_select = true;
};
};
zsh = { zsh = {
enable = true; enable = true;
enableCompletion = true; enableCompletion = true;

View file

@ -5,7 +5,7 @@
... ...
}: }:
{ {
home.packages = [ pkgs.git-sync ]; services.git-sync.enable = false; # Can't find pass for some reason...
programs.git = programs.git =
let let
package = pkgs.git.override { package = pkgs.git.override {
@ -32,8 +32,17 @@
"*.gpg filter=gpg diff=gpg" "*.gpg filter=gpg diff=gpg"
"*.asc filter=gpg diff=gpg" "*.asc filter=gpg diff=gpg"
]; ];
extraConfig = { extraConfig =
github.user = "pixelifytica"; let
user = "pixelifytica";
in
{
github = {
inherit user;
};
gitea = {
inherit user;
};
pull.rebase = false; pull.rebase = false;
init.defaultBranch = "main"; init.defaultBranch = "main";
merge.conflictstyle = "diff3"; merge.conflictstyle = "diff3";

View file

@ -1,8 +1,6 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
rclone
sshfs
(writeShellScriptBin "ssh-keygen-defaults" ''ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"'') (writeShellScriptBin "ssh-keygen-defaults" ''ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"'')
]; ];
programs.ssh = { programs.ssh = {

View file

@ -143,7 +143,6 @@
disabled = false; disabled = false;
format = "using [$indicator]($style)"; format = "using [$indicator]($style)";
bash_indicator = " "; bash_indicator = " ";
zsh_indicator = "󰰶 ";
fish_indicator = "󰈺 "; fish_indicator = "󰈺 ";
powershell_indicator = " "; powershell_indicator = " ";
cmd_indicator = " "; cmd_indicator = " ";

View file

@ -2,28 +2,17 @@
config, config,
lib, lib,
pkgs, pkgs,
osConfig,
... ...
}: }:
{ {
imports = [ imports = [ ./waybar/default.nix ];
./waybar.nix
./fuzzel.nix
./mako.nix
];
stylix.targets.swaylock.useImage = false; # Using swaylock-effects instead
home.packages = with pkgs; [ home.packages = with pkgs; [
libreoffice-fresh
ffmpeg ffmpeg
grim grim
slurp slurp
swappy
wl-clipboard wl-clipboard
swayimg swayimg
swaybg swaybg
(writeShellScriptBin "swaylockfx" ''
${swaylock-effects}/bin/swaylock --screenshots --clock --indicator --effect-blur 7x5 --effect-vignette 0.5:0.5
'')
(writeShellScriptBin "protonmail-setup-bridge" '' (writeShellScriptBin "protonmail-setup-bridge" ''
pkill -9 -f protonmail-bridge pkill -9 -f protonmail-bridge
${protonmail-bridge}/bin/protonmail-bridge -c ${protonmail-bridge}/bin/protonmail-bridge -c
@ -32,9 +21,50 @@
]; ];
programs = { programs = {
waybar.systemd.target = "sway-session.target"; waybar.systemd.target = "sway-session.target";
swaylock = { swaylock.enable = true;
fuzzel = {
enable = true; enable = true;
package = pkgs.swaylock-effects; settings = {
main = {
icon-theme = config.gtk.iconTheme.name;
icons-enabled = true;
fields = "filename,name,generic,categories";
fuzzy = true;
filter-desktop = true;
terminal = "${config.programs.alacritty.package}/bin/alacritty -e";
lines = 24;
width = 80;
tabs = 4;
layer = "overlay";
};
border = {
width = 1;
radius = 5;
};
};
};
wlogout = {
enable = true;
layout = [
{
label = "reboot";
action = "systemctl reboot";
text = "Reboot";
keybind = "r";
}
{
label = "shutdown";
action = "systemctl poweroff";
text = "Shutdown";
keybind = "s";
}
{
label = "logout";
action = "swaymsg exit";
text = "Logout";
keybind = "l";
}
];
}; };
}; };
services = { services = {
@ -48,12 +78,26 @@
enable = true; enable = true;
indicator = true; indicator = true;
}; };
mako = {
enable = true;
anchor = "top-right";
width = 600;
height = 600;
layer = "top";
markup = true;
maxVisible = 10;
icons = true;
iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}";
borderRadius = 5;
borderSize = 1;
defaultTimeout = 0;
};
swayidle = { swayidle = {
enable = true; enable = true;
timeouts = [ timeouts = [
{ {
timeout = 60 * 15; # 15 minutes timeout = 60 * 15; # 15 minutes
command = "swaylockfx"; command = "swaylock";
} }
]; ];
}; };
@ -64,6 +108,13 @@
tray = "never"; tray = "never";
}; };
}; };
gtk = {
enable = true;
iconTheme = {
package = pkgs.papirus-icon-theme.override { color = "violet"; };
name = "Papirus-${(import ../lib/to_capital.nix lib) config.lib.stylix.scheme.variant}";
};
};
wayland.windowManager.sway = { wayland.windowManager.sway = {
enable = true; enable = true;
package = pkgs.swayfx.overrideAttrs (old: { package = pkgs.swayfx.overrideAttrs (old: {
@ -76,7 +127,8 @@
config = { config = {
input = { input = {
"*" = { "*" = {
xkb_layout = osConfig.services.xserver.xkb.layout; xkb_layout = "gb";
xkb_options = "ctrl:nocaps";
}; };
"type:touchpad" = { "type:touchpad" = {
tap = "enabled"; tap = "enabled";
@ -152,9 +204,6 @@
"${modifier}+bracketright" = "move workspace to output right"; "${modifier}+bracketright" = "move workspace to output right";
# Function keys # Function keys
## Screenshot
"Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.swappy}/bin/swappy -f -";
## Sound ## Sound
"XF86AudioMute" = "exec ${config.services.avizo.package}/bin/volumectl %"; "XF86AudioMute" = "exec ${config.services.avizo.package}/bin/volumectl %";
"XF86AudioMicMute" = "exec ${config.services.avizo.package}/bin/volumectl -m %"; "XF86AudioMicMute" = "exec ${config.services.avizo.package}/bin/volumectl -m %";
@ -172,9 +221,10 @@
"XF86MonBrightnessDown" = "exec ${config.services.avizo.package}/bin/lightctl - 5"; "XF86MonBrightnessDown" = "exec ${config.services.avizo.package}/bin/lightctl - 5";
# System utilities # System utilities
"Mod4+Mod1+l" = "exec swaylockfx"; "Mod4+Mod1+l" = "exec swaylock";
"${modifier}+z" = "exec ${config.services.mako.package}/bin/makoctl restore"; "${modifier}+z" = "exec ${config.services.mako.package}/bin/makoctl restore";
"${modifier}+Shift+z" = "exec ${config.services.mako.package}/bin/makoctl dismiss -a"; "${modifier}+Shift+z" = "exec ${config.services.mako.package}/bin/makoctl dismiss -a";
"${modifier}+Shift+p" = "exec ${config.programs.wlogout.package}/bin/wlogout";
"${modifier}+Shift+Return" = "exec ${config.programs.emacs.finalPackage}/bin/emacsclient -c"; "${modifier}+Shift+Return" = "exec ${config.programs.emacs.finalPackage}/bin/emacsclient -c";
}; };
}; };
@ -198,5 +248,4 @@
titlebar_separator enable titlebar_separator enable
''; '';
}; };
xdg.configFile."swappy/config".source = ./swappy.conf;
} }

View file

@ -5,7 +5,6 @@
Description = "Home Manager System Tray"; Description = "Home Manager System Tray";
Requires = [ "graphical-session.target" ]; Requires = [ "graphical-session.target" ];
}; };
home.packages = [ pkgs.playerctl ]; # For MPRIS to work
programs.waybar = { programs.waybar = {
enable = true; enable = true;
systemd.enable = true; systemd.enable = true;
@ -15,10 +14,10 @@
position = "top"; position = "top";
# Layout # Layout
"modules-left" = [ "modules-left" = [
"hyprland/workspaces" "sway/window"
"hyprland/window" "mpris"
]; ];
"modules-center" = [ "mpris" ]; "modules-center" = [ "sway/workspaces" ];
"modules-right" = [ "modules-right" = [
"custom/notification" "custom/notification"
"pulseaudio" "pulseaudio"
@ -29,20 +28,20 @@
"backlight" "backlight"
"battery" "battery"
"custom/weather" "custom/weather"
"systemd-failed-units"
"tray" "tray"
]; ];
# Module config # Module config
"hyprland/workspaces" = { "sway/workspaces" = {
format = "{icon}"; format = "{icon}";
format-icons = { format-icons = {
"1" = "󰆍 "; "1" = "󰫃 ";
"2" = "󰈹 "; "2" = "󰫄 ";
"3" = "󰝰 "; "3" = "󰫅 ";
"4" = "󰭹 "; "4" = "󰫆 ";
"5" = "󰢹 "; "5" = "󰫇 ";
"6" = "󰓓 "; "6" = "󰫈 ";
default = "󰀻 "; default = "󰋙 ";
urgent = "󰁡 ";
}; };
all-outputs = false; all-outputs = false;
persistent-workspaces = { persistent-workspaces = {
@ -54,7 +53,7 @@
"6" = [ ]; "6" = [ ];
}; };
}; };
"hyprland/window" = { "sway/window" = {
"format" = "{title}"; "format" = "{title}";
"max-length" = 50; "max-length" = 50;
"rewrite" = { "rewrite" = {
@ -62,15 +61,14 @@
"(alacritty.*)" = " $1"; "(alacritty.*)" = " $1";
"(.*) - mpv" = "󰦟 $1"; "(.*) - mpv" = "󰦟 $1";
"swayimg: (.*)" = "󰋩 $1"; "swayimg: (.*)" = "󰋩 $1";
"swappy" = "󰹑 swappy"; "(btm)" = " Resource Usage [$1]";
"(?:/nix/.*)(btm)" = " Resource Usage [$1]"; "(cava)" = "󰝚 Music Visualiser [$1]";
"(?:/nix/.*)(cava)" = "󰝚 Music Visualiser [$1]"; "(.*) - Thunar" = "󰝰 $1";
"Mozilla Firefox" = "󰈹 $1"; "Mozilla Firefox" = "󰈹 $1";
"(.*) Mozilla Firefox" = "󰈹 $1"; "(.*) Mozilla Firefox" = "󰈹 $1";
"Nyxt - (.*)" = "󰀹 $1"; "Nyxt - (.*)" = "󰀹 $1";
"(.*) - Chromium" = "󰊯 $1"; "(.*) - Chromium" = "󰊯 $1";
"(Signal.*)" = "󰭹 $1"; "(Signal.*)" = "󰭹 $1";
"(WhatsApp for Linux.*)" = "󰖣 $1";
"((?:.*)WebCord.*)" = "󰙯 $1"; "((?:.*)WebCord.*)" = "󰙯 $1";
"(Cartridges.*)" = "󰊗 $1"; "(Cartridges.*)" = "󰊗 $1";
"([Ss]team.*)" = "󰓓 $1"; "([Ss]team.*)" = "󰓓 $1";
@ -79,13 +77,14 @@
"(.*)(?: *)PrusaSlicer G-code Viewer-(.*)" = "󰹛 $1 G-code Viewer ($2)"; "(.*)(?: *)PrusaSlicer G-code Viewer-(.*)" = "󰹛 $1 G-code Viewer ($2)";
"FreeCAD (.*)" = "󰻬 FreeCAD $1"; "FreeCAD (.*)" = "󰻬 FreeCAD $1";
"(.*) - Blender.* " = "󰂫 $1"; "(.*) - Blender.* " = "󰂫 $1";
"(Remmina Remote Desktop Client)" = "󰢹 $1"; "(X2Go Client)" = "󰢹 $1";
"(NoMachine|Nxplayer.bin)(?: *)(.*)" = "󰢹 $1 $2"; "(NoMachine|Nxplayer.bin) (.*)" = "󰢹 $1 $2";
"(.*) \| Microsoft Teams" = "󰊻 ($1)";
}; };
}; };
mpris = { mpris = {
"format" = "{player_icon} {status_icon} | {album} - {artist} - {title}"; "format" = "{player_icon} {artist} - {title} {status_icon}";
"tooltip-format" = "{player_icon} ({player}) {status_icon} {dynamic}"; "tooltip-format" = "{player_icon} ({player}) {dynamic}";
"title-len" = 64; "title-len" = 64;
"interval" = 1; "interval" = 1;
"dynamic-order" = [ "dynamic-order" = [
@ -97,13 +96,16 @@
]; ];
"player-icons" = { "player-icons" = {
"default" = "󰲸 "; "default" = "󰲸 ";
"emms" = " ";
"firefox" = "󰈹 ";
"mpv" = "󰦟 ";
}; };
"status-icons" = { "status-icons" = {
"playing" = "󰐊"; "playing" = "󰐊";
"paused" = "󰏤"; "paused" = "󰏤";
"stopped" = "󰓛"; "stopped" = "󰓛";
}; };
"ignored-players" = [ "firefox" ]; "ignored-players" = [ ];
}; };
pulseaudio = { pulseaudio = {
scroll-step = 5; scroll-step = 5;
@ -174,9 +176,9 @@
}; };
"clock#calendar" = { "clock#calendar" = {
format = "󰃭 {:%Y-%m-%d}"; format = "󰃭 {:%Y-%m-%d}";
tooltip-format = "<tt><small>{calendar}</small></tt>"; tooltip-format = "<tt>{calendar}</tt>";
calendar = { calendar = {
mode = "year"; mode = "month";
mode-mon-col = 3; mode-mon-col = 3;
weeks-pos = "left"; weeks-pos = "left";
on-scroll = 1; on-scroll = 1;
@ -189,11 +191,10 @@
weeks = "<span color='${scheme.cyan}'><b>W{}</b></span>"; weeks = "<span color='${scheme.cyan}'><b>W{}</b></span>";
weekdays = "<span color='${scheme.orange}'><b>{}</b></span>"; weekdays = "<span color='${scheme.orange}'><b>{}</b></span>";
days = "<span color='${scheme.base05}'><b>{}</b></span>"; days = "<span color='${scheme.base05}'><b>{}</b></span>";
today = "<span color='${scheme.magenta}'><b><i>{}</i></b></span>"; today = "<span color='${scheme.base0D}'><b><i>{}</i></b></span>";
}; };
}; };
actions = { actions = {
on-click-right = "mode";
on-scroll-up = "shift_up"; on-scroll-up = "shift_up";
on-scroll-down = "shift_down"; on-scroll-down = "shift_down";
}; };
@ -240,13 +241,6 @@
"󰁹 " "󰁹 "
]; ];
}; };
"systemd-failed-units" = {
hide-on-ok = false;
format = "󰀦 S:{nr_failed_system} U:{nr_failed_user}";
format-ok = "󰄬 ";
system = true;
user = true;
};
"custom/notification" = "custom/notification" =
let let
makoctl = "${config.services.mako.package}/bin/makoctl"; makoctl = "${config.services.mako.package}/bin/makoctl";
@ -261,10 +255,10 @@
"custom/weather" = "custom/weather" =
let let
date-format = "%Y-%m-%d"; date-format = "%Y-%m-%d";
custom-indicator = "{ICON}{temp_C}°C({FeelsLikeC}°C)"; custom-indicator = "{ICON}{temp_C}({FeelsLikeC})";
in in
{ {
format = "{}"; format = "{}°";
tooltip = true; tooltip = true;
interval = 900; # Every 15 minutes interval = 900; # Every 15 minutes
exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"''; exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
@ -279,6 +273,7 @@
style = style =
let let
scheme = config.lib.stylix.scheme.withHashtag; scheme = config.lib.stylix.scheme.withHashtag;
alpha = "0.8";
in in
'' ''
* { * {
@ -303,8 +298,8 @@
} }
tooltip { tooltip {
background: ${scheme.base00}; background: alpha(${scheme.base00}, ${alpha});
border: 1px solid ${scheme.base0E}; border: 1px solid ${scheme.base0D};
border-radius: 5px; border-radius: 5px;
box-shadow: none; box-shadow: none;
} }
@ -347,18 +342,18 @@
margin: 0px; margin: 0px;
padding: 0px 5px; padding: 0px 5px;
} }
#workspaces button.empty { #workspaces button.persistent {
color: ${scheme.base03}; color: ${scheme.base03};
} }
#workspaces button.active { #workspaces button.focused {
color: ${scheme.base0E}; color: ${scheme.base0D};
} }
#workspaces button.urgent { #workspaces button.urgent {
color: ${scheme.base09}; color: ${scheme.base09};
} }
#mpris.paused { #mpris {
color: ${scheme.base03}; color: ${scheme.base04};
} }
#custom-notification { #custom-notification {
@ -390,13 +385,6 @@
#battery.plugged { #battery.plugged {
color: ${scheme.base0B}; color: ${scheme.base0B};
} }
#systemd-failed-units.ok {
color: ${scheme.base0B}
}
#systemd-failed-units.degraded {
color: ${scheme.base08}
}
''; '';
}; };
} }

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Catppuccin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1 @@
# Wallpapers for personal use

View file

Before

Width:  |  Height:  |  Size: 562 KiB

After

Width:  |  Height:  |  Size: 562 KiB

View file

Before

Width:  |  Height:  |  Size: 642 KiB

After

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

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