Compare commits
No commits in common. "main" and "stylix" have entirely different histories.
2
Makefile
|
@ -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
|
||||||
|
|
110
flake.lock
|
@ -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",
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 178 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"]
|
||||||
},
|
},
|
||||||
{
|
{
|
7
system/home/browser/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./firefox.nix
|
||||||
|
./nyxt.nix
|
||||||
|
];
|
||||||
|
}
|
|
@ -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 {
|
|
@ -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 =
|
|
@ -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
|
@ -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" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,4 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./firefox.nix ];
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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.
|
|
|
@ -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>
|
|
|
@ -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}
|
|
|
@ -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>
|
|
|
@ -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
|
|
|
@ -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>
|
|
|
@ -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";
|
|
||||||
}
|
|
Before Width: | Height: | Size: 244 KiB |
Before Width: | Height: | Size: 24 KiB |
|
@ -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";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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}
|
|
||||||
'';
|
|
||||||
|
|
||||||
}
|
|
|
@ -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
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./alacritty.nix ];
|
|
||||||
}
|
|
|
@ -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 (
|
|
@ -1,8 +0,0 @@
|
||||||
{ lib, pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.gpg.enable = true;
|
|
||||||
services.gpg-agent = {
|
|
||||||
enable = true;
|
|
||||||
pinentryPackage = lib.mkDefault pkgs.pinentry-all;
|
|
||||||
};
|
|
||||||
}
|
|
BIN
system/home/icons/nix/nix-owo-transparent.png
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
system/home/icons/nix/nix-owo-white.png
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
system/home/icons/nix/nix-shooting.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
system/home/icons/nix/nix-snowflake-cute.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
system/home/icons/nix/nixos-confetti.png
Normal file
After Width: | Height: | Size: 89 KiB |
13
system/home/lib/to_capital.nix
Normal 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)
|
||||||
|
))
|
|
@ -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;
|
|
@ -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";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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";
|
||||||
}
|
}
|
15
system/home/plasma/klassy.nix
Normal 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 = "";
|
||||||
|
};
|
||||||
|
}
|
42
system/home/plasma/konsole.nix
Normal 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
20
system/home/plasma/krohnkite.nix
Normal 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=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
))
|
||||||
|
];
|
||||||
|
}
|
100
system/home/plasma/onelight.colorscheme
Normal 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
|
|
@ -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";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
38
system/home/scripts/lua/sync-all.lua
Executable 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
|
68
system/home/scripts/python/sync-all.py
Executable 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()
|
|
@ -1,2 +0,0 @@
|
||||||
shopt -s extglob
|
|
||||||
rm -rf ~/.config/!(dconf|kdeconnect|protonmail|Signal|WebCord|whatsapp-for-linux)
|
|
|
@ -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"
|
|
||||||
)
|
|
|
@ -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
|
4
system/home/scripts/shell/low-battery.sh
Normal 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
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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;
|
15
system/home/services/email/mbsync-ensure-pass.sh
Normal 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
|
41
system/home/services/password-store/default.nix
Normal 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
6
system/home/services/password-store/git-pass-mapping.ini
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[DEFAULT]
|
||||||
|
username_extractor=regex_search
|
||||||
|
regex_username=^login: (.*)$
|
||||||
|
|
||||||
|
[*]
|
||||||
|
target=git/${host}
|
|
@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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}'";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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;
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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 = " ";
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
}
|
|
@ -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}
|
|
||||||
}
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
21
system/home/wallpapers/LICENSE
Normal 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.
|
1
system/home/wallpapers/README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# Wallpapers for personal use
|
Before Width: | Height: | Size: 562 KiB After Width: | Height: | Size: 562 KiB |
Before Width: | Height: | Size: 642 KiB After Width: | Height: | Size: 642 KiB |
BIN
system/home/wallpapers/dithered/barn.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
system/home/wallpapers/dithered/lighthouse.png
Normal file
After Width: | Height: | Size: 103 KiB |
BIN
system/home/wallpapers/dithered/marketplace.png
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
system/home/wallpapers/dithered/motorbikes.png
Normal file
After Width: | Height: | Size: 133 KiB |
BIN
system/home/wallpapers/flatppuccin/flatppuccin_4k_macchiato.png
Normal file
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 202 KiB |
BIN
system/home/wallpapers/gradients/bkg1_bkg5.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
system/home/wallpapers/gradients/bkg3_bkg5.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
system/home/wallpapers/gradients/blue_bkg5.png
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
system/home/wallpapers/gradients/blue_green.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
system/home/wallpapers/gradients/cyan_bkg5.png
Normal file
After Width: | Height: | Size: 146 KiB |