Compare commits
18 Commits
70a8af6395
...
556010c860
Author | SHA1 | Date | |
---|---|---|---|
556010c860 | |||
ecbdfbaa7f | |||
7cd825d938 | |||
2b76dbea66 | |||
df0e6b2924 | |||
4543939b17 | |||
85ecd4a72a | |||
5d1f6aca74 | |||
1f665646ea | |||
14b53c4321 | |||
d8e0e78728 | |||
7879fda102 | |||
c1f28192a0 | |||
d1c2adface | |||
ab75776ebe | |||
dba3b8944d | |||
0d8b1e7a37 | |||
ee02393220 |
30
flake.lock
generated
30
flake.lock
generated
@ -524,11 +524,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1741851582,
|
"lastModified": 1742069588,
|
||||||
"narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=",
|
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6607cf789e541e7873d40d3a8f7815ea92204f32",
|
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -620,29 +620,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"plasma-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1740569341,
|
|
||||||
"narHash": "sha256-WV8nY2IOfWdzBF5syVgCcgOchg/qQtpYh6LECYS9XkY=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "plasma-manager",
|
|
||||||
"rev": "5eeb0172fb74392053b66a8149e61b5e191b2845",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "plasma-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pre-commit-hooks": {
|
"pre-commit-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_4",
|
"flake-compat": "flake-compat_4",
|
||||||
@ -679,7 +656,6 @@
|
|||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nixvim": "nixvim",
|
"nixvim": "nixvim",
|
||||||
"plasma-manager": "plasma-manager",
|
|
||||||
"pre-commit-hooks": "pre-commit-hooks",
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
"secrets": "secrets",
|
"secrets": "secrets",
|
||||||
"thunderbird-gnome-theme": "thunderbird-gnome-theme"
|
"thunderbird-gnome-theme": "thunderbird-gnome-theme"
|
||||||
|
@ -36,11 +36,6 @@
|
|||||||
url = "github:nix-community/nixvim/nixos-24.11";
|
url = "github:nix-community/nixvim/nixos-24.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
plasma-manager = {
|
|
||||||
url = "github:nix-community/plasma-manager";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
inputs.home-manager.follows = "home-manager";
|
|
||||||
};
|
|
||||||
pre-commit-hooks = {
|
pre-commit-hooks = {
|
||||||
url = "github:cachix/git-hooks.nix";
|
url = "github:cachix/git-hooks.nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@ -98,7 +93,7 @@
|
|||||||
(lib.mapAttrs (
|
(lib.mapAttrs (
|
||||||
name: value:
|
name: value:
|
||||||
lib.nixosSystem {
|
lib.nixosSystem {
|
||||||
specialArgs = { inherit self; };
|
specialArgs = { inherit inputs; };
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
|
@ -22,23 +22,6 @@
|
|||||||
users.extraGroups.vboxusers.members = [ "jordan" ];
|
users.extraGroups.vboxusers.members = [ "jordan" ];
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
programs = {
|
|
||||||
dev = {
|
|
||||||
node.enable = true;
|
|
||||||
};
|
|
||||||
firefox.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
gpg.enable = true;
|
|
||||||
graphics = {
|
|
||||||
raster.enable = true;
|
|
||||||
vector.enable = true;
|
|
||||||
};
|
|
||||||
libreoffice.enable = true;
|
|
||||||
neovim.enable = true;
|
|
||||||
pass.enable = true;
|
|
||||||
qbittorrent.enable = true;
|
|
||||||
thunderbird.enable = true;
|
|
||||||
};
|
|
||||||
services = {
|
services = {
|
||||||
borgmatic = {
|
borgmatic = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -48,9 +31,6 @@
|
|||||||
repoPath = "ssh://uzu2y5b1@uzu2y5b1.repo.borgbase.com/./repo";
|
repoPath = "ssh://uzu2y5b1@uzu2y5b1.repo.borgbase.com/./repo";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
shell = {
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
|
@ -1,22 +1,22 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
self.inputs.agenix.nixosModules.age
|
inputs.agenix.nixosModules.age
|
||||||
self.inputs.home-manager.nixosModule
|
inputs.home-manager.nixosModule
|
||||||
../modules/home-manager
|
|
||||||
../modules/nixos
|
../modules/nixos
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
self.inputs.agenix.overlays.default
|
inputs.agenix.overlays.default
|
||||||
(import ../overlays/default.nix)
|
(import ../overlays/default.nix)
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
unstable = import self.inputs.nixpkgs-unstable { system = final.system; };
|
unstable = import inputs.nixpkgs-unstable { system = final.system; };
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -54,7 +54,12 @@
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
users.defaultUserShell = pkgs.zsh;
|
users.defaultUserShell = pkgs.zsh;
|
||||||
programs.zsh.enable = true;
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.pathsToLink = [ "/share/zsh" ];
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
package = pkgs.nixVersions.stable;
|
package = pkgs.nixVersions.stable;
|
||||||
@ -98,6 +103,20 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
sharedModules = [
|
||||||
|
inputs.nixvim.homeManagerModules.nixvim
|
||||||
|
{
|
||||||
|
home.stateVersion = config.system.stateVersion;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
git
|
git
|
||||||
neovim
|
neovim
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./common.nix
|
./common.nix
|
||||||
|
../users/jordan
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
|
@ -24,22 +24,5 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = {
|
|
||||||
programs = {
|
|
||||||
dev = {
|
|
||||||
node.enable = true;
|
|
||||||
};
|
|
||||||
firefox.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
gpg.enable = true;
|
|
||||||
neovim.enable = true;
|
|
||||||
pass.enable = true;
|
|
||||||
qbittorrent.enable = true;
|
|
||||||
};
|
|
||||||
shell = {
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
}
|
}
|
||||||
|
@ -26,17 +26,6 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
programs = {
|
|
||||||
dev = {
|
|
||||||
node.enable = true;
|
|
||||||
};
|
|
||||||
firefox.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
gpg.enable = true;
|
|
||||||
neovim.enable = true;
|
|
||||||
pass.enable = true;
|
|
||||||
qbittorrent.enable = true;
|
|
||||||
};
|
|
||||||
services = {
|
services = {
|
||||||
borgmatic = {
|
borgmatic = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -46,9 +35,6 @@
|
|||||||
repoPath = "ssh://b9cjl9hq@b9cjl9hq.repo.borgbase.com/./repo";
|
repoPath = "ssh://b9cjl9hq@b9cjl9hq.repo.borgbase.com/./repo";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
shell = {
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
{
|
{
|
||||||
config,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
self,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
self.inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./disko-config.nix
|
./disko-config.nix
|
||||||
../desktop.nix
|
../desktop.nix
|
||||||
@ -36,8 +35,7 @@
|
|||||||
videoDrivers = [ "nvidia" ];
|
videoDrivers = [ "nvidia" ];
|
||||||
};
|
};
|
||||||
displayManager = {
|
displayManager = {
|
||||||
defaultSession = if config.modules.system.desktop.kde.enable then "plasmax11" else "gnome-xorg";
|
defaultSession = "gnome-xorg";
|
||||||
sddm.wayland.enable = lib.mkForce false;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -48,24 +46,5 @@
|
|||||||
pkgs.moonlight-qt
|
pkgs.moonlight-qt
|
||||||
];
|
];
|
||||||
|
|
||||||
modules = {
|
|
||||||
programs = {
|
|
||||||
dev = {
|
|
||||||
node.enable = true;
|
|
||||||
};
|
|
||||||
firefox.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
gpg.enable = true;
|
|
||||||
neovim.enable = true;
|
|
||||||
pass.enable = true;
|
|
||||||
recording = {
|
|
||||||
audio.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
shell = {
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
}
|
}
|
||||||
|
@ -182,12 +182,6 @@
|
|||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
podman.enable = true;
|
podman.enable = true;
|
||||||
programs = {
|
|
||||||
gpg.enable = true;
|
|
||||||
};
|
|
||||||
shell = {
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
services = {
|
services = {
|
||||||
borgmatic = {
|
borgmatic = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
self.inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./disko-config.nix
|
./disko-config.nix
|
||||||
./mail.nix
|
./mail.nix
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
self.inputs.nixos-mailserver.nixosModule
|
inputs.nixos-mailserver.nixosModule
|
||||||
];
|
];
|
||||||
|
|
||||||
services.roundcube = {
|
services.roundcube = {
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
@ -9,6 +8,8 @@
|
|||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./gitea-runner.nix
|
./gitea-runner.nix
|
||||||
|
./nix-serve.nix
|
||||||
|
./zonos-container.nix
|
||||||
../desktop.nix
|
../desktop.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -43,22 +44,6 @@
|
|||||||
lxd.enable = true;
|
lxd.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.nix-serve = {
|
|
||||||
enable = true;
|
|
||||||
secretKeyFile = "/var/cache-priv-key.pem";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.nginx = {
|
|
||||||
enable = true;
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
virtualHosts = {
|
|
||||||
"odyssey.mesh.vimium.net" = {
|
|
||||||
locations."/".proxyPass =
|
|
||||||
"http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.sunshine = {
|
services.sunshine = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.unstable.sunshine;
|
package = pkgs.unstable.sunshine;
|
||||||
@ -68,36 +53,6 @@
|
|||||||
services.displayManager.ly.enable = true;
|
services.displayManager.ly.enable = true;
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
programs = {
|
|
||||||
dev = {
|
|
||||||
node.enable = true;
|
|
||||||
};
|
|
||||||
emulators = {
|
|
||||||
gamecube.enable = true;
|
|
||||||
ps2.enable = true;
|
|
||||||
ps3.enable = true;
|
|
||||||
psp.enable = true;
|
|
||||||
wii.enable = true;
|
|
||||||
xbox.enable = true;
|
|
||||||
};
|
|
||||||
firefox.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
gpg.enable = true;
|
|
||||||
graphics = {
|
|
||||||
modeling.enable = true;
|
|
||||||
raster.enable = true;
|
|
||||||
vector.enable = true;
|
|
||||||
};
|
|
||||||
libreoffice.enable = true;
|
|
||||||
lutris.enable = true;
|
|
||||||
pass.enable = true;
|
|
||||||
neovim.enable = true;
|
|
||||||
qbittorrent.enable = true;
|
|
||||||
recording = {
|
|
||||||
audio.enable = true;
|
|
||||||
video.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
hardware.presonus-studio.enable = true;
|
hardware.presonus-studio.enable = true;
|
||||||
services = {
|
services = {
|
||||||
borgmatic = {
|
borgmatic = {
|
||||||
@ -114,11 +69,7 @@
|
|||||||
repoPath = "ssh://iqwu22oq@iqwu22oq.repo.borgbase.com/./repo";
|
repoPath = "ssh://iqwu22oq@iqwu22oq.repo.borgbase.com/./repo";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
shell = {
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
system.desktop.gnome.enable = lib.mkForce false;
|
system.desktop.gnome.enable = lib.mkForce false;
|
||||||
system.desktop.hyprland.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -179,7 +179,7 @@ in
|
|||||||
users.groups.nix-ci-user = { };
|
users.groups.nix-ci-user = { };
|
||||||
|
|
||||||
age.secrets."files/services/gitea-runner/${hostname}-token" = {
|
age.secrets."files/services/gitea-runner/${hostname}-token" = {
|
||||||
file = "${self.inputs.secrets}/files/services/gitea-runner/${hostname}-token.age";
|
file = "${inputs.secrets}/files/services/gitea-runner/${hostname}-token.age";
|
||||||
group = "podman";
|
group = "podman";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
22
hosts/odyssey/nix-serve.nix
Normal file
22
hosts/odyssey/nix-serve.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.nix-serve = {
|
||||||
|
enable = true;
|
||||||
|
secretKeyFile = "/var/cache-priv-key.pem";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
virtualHosts = {
|
||||||
|
"odyssey.mesh.vimium.net" = {
|
||||||
|
locations."/".proxyPass =
|
||||||
|
"http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
72
hosts/odyssey/zonos-container.nix
Normal file
72
hosts/odyssey/zonos-container.nix
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
# Auto-generated using compose2nix v0.3.2-pre.
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
hardware.nvidia-container-toolkit.enable = true;
|
||||||
|
# Runtime
|
||||||
|
virtualisation.docker = {
|
||||||
|
enable = true;
|
||||||
|
# enableNvidia = true;
|
||||||
|
enableOnBoot = true;
|
||||||
|
autoPrune.enable = true;
|
||||||
|
daemon.settings.features.cdi = true;
|
||||||
|
rootless.enable = true;
|
||||||
|
rootless.daemon.settings.features.cdi = true;
|
||||||
|
};
|
||||||
|
virtualisation.oci-containers.backend = "docker";
|
||||||
|
|
||||||
|
# Containers
|
||||||
|
virtualisation.oci-containers.containers."zonos_container" = {
|
||||||
|
image = "compose2nix/zonos_container";
|
||||||
|
environment = {
|
||||||
|
"GRADIO_SHARE" = "False";
|
||||||
|
"NVIDIA_VISIBLE_DEVICES" = "0";
|
||||||
|
};
|
||||||
|
cmd = [
|
||||||
|
"python3"
|
||||||
|
"gradio_interface.py"
|
||||||
|
];
|
||||||
|
log-driver = "journald";
|
||||||
|
extraOptions = [
|
||||||
|
"--device=nvidia.com/gpu=0"
|
||||||
|
"--network=host"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
systemd.services."docker-zonos_container" = {
|
||||||
|
serviceConfig = {
|
||||||
|
Restart = lib.mkOverride 90 "no";
|
||||||
|
};
|
||||||
|
partOf = [
|
||||||
|
"docker-compose-zonos-root.target"
|
||||||
|
];
|
||||||
|
wantedBy = [
|
||||||
|
"docker-compose-zonos-root.target"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Builds
|
||||||
|
systemd.services."docker-build-zonos_container" = {
|
||||||
|
path = [
|
||||||
|
pkgs.docker
|
||||||
|
pkgs.git
|
||||||
|
];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
TimeoutSec = 900;
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
cd /home/jordan/projects/jordan/Zonos
|
||||||
|
docker build -t compose2nix/zonos_container .
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Root service
|
||||||
|
# When started, this will automatically create all resources and start
|
||||||
|
# the containers. When stopped, this will teardown all resources.
|
||||||
|
systemd.targets."docker-compose-zonos-root" = {
|
||||||
|
unitConfig = {
|
||||||
|
Description = "Root target generated by compose2nix.";
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
self.inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./home-assistant
|
./home-assistant
|
||||||
../server.nix
|
../server.nix
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -12,7 +12,7 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
age.secrets."files/services/home-assistant/secrets.yaml" = {
|
age.secrets."files/services/home-assistant/secrets.yaml" = {
|
||||||
file = "${self.inputs.secrets}/files/services/home-assistant/secrets.yaml.age";
|
file = "${inputs.secrets}/files/services/home-assistant/secrets.yaml.age";
|
||||||
path = "${config.services.home-assistant.configDir}/secrets.yaml";
|
path = "${config.services.home-assistant.configDir}/secrets.yaml";
|
||||||
owner = "hass";
|
owner = "hass";
|
||||||
group = "hass";
|
group = "hass";
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -22,7 +22,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
age.secrets."files/services/zigbee2mqtt/secret.yaml" = {
|
age.secrets."files/services/zigbee2mqtt/secret.yaml" = {
|
||||||
file = "${self.inputs.secrets}/files/services/zigbee2mqtt/secret.yaml.age";
|
file = "${inputs.secrets}/files/services/zigbee2mqtt/secret.yaml.age";
|
||||||
path = "${config.services.zigbee2mqtt.dataDir}/secret.yaml";
|
path = "${config.services.zigbee2mqtt.dataDir}/secret.yaml";
|
||||||
owner = "zigbee2mqtt";
|
owner = "zigbee2mqtt";
|
||||||
group = "zigbee2mqtt";
|
group = "zigbee2mqtt";
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
self.inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../server.nix
|
../server.nix
|
||||||
];
|
];
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ in
|
|||||||
age.secrets =
|
age.secrets =
|
||||||
{
|
{
|
||||||
"passwords/services/coturn/static-auth-secret" = {
|
"passwords/services/coturn/static-auth-secret" = {
|
||||||
file = "${self.inputs.secrets}/passwords/services/coturn/static-auth-secret.age";
|
file = "${inputs.secrets}/passwords/services/coturn/static-auth-secret.age";
|
||||||
owner = "turnserver";
|
owner = "turnserver";
|
||||||
group = "turnserver";
|
group = "turnserver";
|
||||||
};
|
};
|
||||||
@ -52,7 +52,7 @@ in
|
|||||||
if matrixIntegration then
|
if matrixIntegration then
|
||||||
{
|
{
|
||||||
"passwords/services/coturn/matrix-turn-config.yml" = {
|
"passwords/services/coturn/matrix-turn-config.yml" = {
|
||||||
file = "${self.inputs.secrets}/passwords/services/coturn/matrix-turn-config.yml.age";
|
file = "${inputs.secrets}/passwords/services/coturn/matrix-turn-config.yml.age";
|
||||||
owner = "matrix-synapse";
|
owner = "matrix-synapse";
|
||||||
group = "matrix-synapse";
|
group = "matrix-synapse";
|
||||||
};
|
};
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@ -37,9 +37,9 @@ in
|
|||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"d '${config.services.gitea.customDir}/public/assets/css' 0750 ${config.services.gitea.user} ${config.services.gitea.group} - -"
|
"d '${config.services.gitea.customDir}/public/assets/css' 0750 ${config.services.gitea.user} ${config.services.gitea.group} - -"
|
||||||
"L+ '${config.services.gitea.customDir}/public/assets/css/theme-github.css' - - - - ${self.inputs.gitea-github-theme}/theme-github.css"
|
"L+ '${config.services.gitea.customDir}/public/assets/css/theme-github.css' - - - - ${inputs.gitea-github-theme}/theme-github.css"
|
||||||
"L+ '${config.services.gitea.customDir}/public/assets/css/theme-github-auto.css' - - - - ${self.inputs.gitea-github-theme}/theme-github-auto.css"
|
"L+ '${config.services.gitea.customDir}/public/assets/css/theme-github-auto.css' - - - - ${inputs.gitea-github-theme}/theme-github-auto.css"
|
||||||
"L+ '${config.services.gitea.customDir}/public/assets/css/theme-github-dark.css' - - - - ${self.inputs.gitea-github-theme}/theme-github-dark.css"
|
"L+ '${config.services.gitea.customDir}/public/assets/css/theme-github-dark.css' - - - - ${inputs.gitea-github-theme}/theme-github-dark.css"
|
||||||
];
|
];
|
||||||
|
|
||||||
services.gitea = rec {
|
services.gitea = rec {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@ -31,7 +31,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
age.secrets."passwords/services/outline/oidc-client-secret" = {
|
age.secrets."passwords/services/outline/oidc-client-secret" = {
|
||||||
file = "${self.inputs.secrets}/passwords/services/outline/oidc-client-secret.age";
|
file = "${inputs.secrets}/passwords/services/outline/oidc-client-secret.age";
|
||||||
owner = "outline";
|
owner = "outline";
|
||||||
group = "outline";
|
group = "outline";
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@ -29,7 +29,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
age.secrets."passwords/services/photoprism/admin" = {
|
age.secrets."passwords/services/photoprism/admin" = {
|
||||||
file = "${self.inputs.secrets}/passwords/services/photoprism/admin.age";
|
file = "${inputs.secrets}/passwords/services/photoprism/admin.age";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.photoprism = {
|
services.photoprism = {
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./options.nix
|
|
||||||
./programs/brave.nix
|
|
||||||
./programs/dev/cc.nix
|
|
||||||
./programs/dev/java.nix
|
|
||||||
./programs/dev/lua.nix
|
|
||||||
./programs/dev/node.nix
|
|
||||||
./programs/dev/python.nix
|
|
||||||
./programs/dev/rust.nix
|
|
||||||
./programs/dev/scala.nix
|
|
||||||
./programs/dev/shell.nix
|
|
||||||
./programs/dev/zig.nix
|
|
||||||
./programs/emulators.nix
|
|
||||||
./programs/firefox.nix
|
|
||||||
./programs/forensics.nix
|
|
||||||
./programs/git
|
|
||||||
./programs/gpg.nix
|
|
||||||
./programs/graphics.nix
|
|
||||||
./programs/libreoffice.nix
|
|
||||||
./programs/lutris.nix
|
|
||||||
./programs/neovim.nix
|
|
||||||
./programs/pass.nix
|
|
||||||
./programs/qbittorrent.nix
|
|
||||||
./programs/recording.nix
|
|
||||||
./programs/slack.nix
|
|
||||||
./programs/steam.nix
|
|
||||||
./programs/thunderbird.nix
|
|
||||||
./programs/vscode.nix
|
|
||||||
./programs/zoom.nix
|
|
||||||
./shell/zsh
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,137 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
options,
|
|
||||||
lib,
|
|
||||||
self,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options = with types; {
|
|
||||||
user = mkOption {
|
|
||||||
type = attrs;
|
|
||||||
default = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
configFile = mkOption {
|
|
||||||
type = attrs;
|
|
||||||
default = { };
|
|
||||||
description = "Files to place in $XDG_CONFIG_HOME";
|
|
||||||
};
|
|
||||||
dataFile = mkOption {
|
|
||||||
type = attrs;
|
|
||||||
default = { };
|
|
||||||
description = "Files to place in $XDG_DATA_HOME";
|
|
||||||
};
|
|
||||||
file = mkOption {
|
|
||||||
type = attrs;
|
|
||||||
default = { };
|
|
||||||
description = "Files to place directly in $HOME";
|
|
||||||
};
|
|
||||||
packages = mkOption {
|
|
||||||
type = attrs;
|
|
||||||
default = { };
|
|
||||||
description = "User-level installed packages";
|
|
||||||
};
|
|
||||||
programs = mkOption {
|
|
||||||
type = attrs;
|
|
||||||
default = { };
|
|
||||||
description = "Programs managed directly from home-manager";
|
|
||||||
};
|
|
||||||
services = mkOption {
|
|
||||||
type = attrs;
|
|
||||||
default = { };
|
|
||||||
description = "Services managed directly from home-manager";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
dconf.settings = mkOption {
|
|
||||||
type = attrs;
|
|
||||||
default = { };
|
|
||||||
description = "dconf settings to enable";
|
|
||||||
};
|
|
||||||
|
|
||||||
env = mkOption {
|
|
||||||
type = attrsOf (oneOf [
|
|
||||||
str
|
|
||||||
path
|
|
||||||
(listOf (either str path))
|
|
||||||
]);
|
|
||||||
apply = mapAttrs (
|
|
||||||
n: v: if isList v then concatMapStringsSep ":" (x: toString x) v else (toString v)
|
|
||||||
);
|
|
||||||
default = { };
|
|
||||||
description = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
age.secrets."passwords/users/jordan".file = "${self.inputs.secrets}/passwords/users/jordan.age";
|
|
||||||
user =
|
|
||||||
let
|
|
||||||
user = builtins.getEnv "USER";
|
|
||||||
name =
|
|
||||||
if
|
|
||||||
elem user [
|
|
||||||
""
|
|
||||||
"root"
|
|
||||||
]
|
|
||||||
then
|
|
||||||
"jordan"
|
|
||||||
else
|
|
||||||
user;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit name;
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [
|
|
||||||
"audio"
|
|
||||||
"lxd"
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
];
|
|
||||||
description = "Jordan Holt";
|
|
||||||
useDefaultShell = true;
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILVHTjsyMIV4THNw6yz0OxAxGnC+41gX72UrPqTzR+OS jordan@vimium.com"
|
|
||||||
];
|
|
||||||
hashedPasswordFile = config.age.secrets."passwords/users/jordan".path;
|
|
||||||
home = "/home/${name}";
|
|
||||||
group = "users";
|
|
||||||
uid = 1000;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
|
|
||||||
users.${config.user.name} = {
|
|
||||||
home = {
|
|
||||||
file = mkAliasDefinitions options.home.file;
|
|
||||||
stateVersion = config.system.stateVersion;
|
|
||||||
};
|
|
||||||
programs = mkAliasDefinitions options.home.programs;
|
|
||||||
services = mkAliasDefinitions options.home.services;
|
|
||||||
xdg = {
|
|
||||||
enable = true;
|
|
||||||
configFile = mkAliasDefinitions options.home.configFile;
|
|
||||||
dataFile = mkAliasDefinitions options.home.dataFile;
|
|
||||||
};
|
|
||||||
dconf.settings = mkAliasDefinitions options.dconf.settings;
|
|
||||||
};
|
|
||||||
|
|
||||||
sharedModules = [
|
|
||||||
self.inputs.nixvim.homeManagerModules.nixvim
|
|
||||||
self.inputs.plasma-manager.homeManagerModules.plasma-manager
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.${config.user.name} = mkAliasDefinitions options.user;
|
|
||||||
|
|
||||||
environment.extraInit = concatStringsSep "\n" (
|
|
||||||
mapAttrsToList (n: v: "export ${n}=\"${v}\"") config.env
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.brave;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.brave = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
brave
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.dev.cc;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.dev.cc = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
clang
|
|
||||||
gcc
|
|
||||||
gdb
|
|
||||||
cmake
|
|
||||||
llvmPackages.libcxx
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.dev.java;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.dev.java = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
jdk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.dev.lua;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.dev.lua = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
lua
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.dev.node;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.dev.node = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
nodejs_22
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.dev.python;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.dev.python = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
python310
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.dev.rust;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.dev.rust = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
rustc
|
|
||||||
rustup
|
|
||||||
rustfmt
|
|
||||||
rust-bindgen
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.dev.scala;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.dev.scala = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
jdk
|
|
||||||
sbt
|
|
||||||
scala
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.dev.shell;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.dev.shell = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
shellcheck
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.dev.zig;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.dev.zig = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
zig
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,76 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.emulators;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.emulators = {
|
|
||||||
ds.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
gb.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
gba.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
gamecube.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
ps1.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
ps2.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
ps3.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
psp.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
snes.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
switch.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
wii.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
xbox.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
(lib.mkIf cfg.ps1.enable duckstation)
|
|
||||||
(lib.mkIf cfg.ps2.enable unstable.pcsx2)
|
|
||||||
(lib.mkIf cfg.ps3.enable rpcs3)
|
|
||||||
(lib.mkIf cfg.psp.enable unstable.ppsspp)
|
|
||||||
(lib.mkIf cfg.ds.enable desmume)
|
|
||||||
(lib.mkIf (cfg.gba.enable || cfg.gb.enable || cfg.snes.enable) higan)
|
|
||||||
(lib.mkIf cfg.switch.enable yuzuPackages.mainline)
|
|
||||||
(lib.mkIf (cfg.wii.enable || cfg.gamecube.enable) dolphin-emu)
|
|
||||||
(lib.mkIf cfg.xbox.enable unstable.xemu)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,224 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
self,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.firefox;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.firefox = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home.file.".mozilla/firefox/Default/chrome/firefox-gnome-theme".source =
|
|
||||||
self.inputs.firefox-gnome-theme;
|
|
||||||
|
|
||||||
home.programs.firefox = {
|
|
||||||
enable = true;
|
|
||||||
profiles.Default = {
|
|
||||||
search = {
|
|
||||||
default = "DuckDuckGo";
|
|
||||||
force = true;
|
|
||||||
};
|
|
||||||
userChrome = ''
|
|
||||||
@import "firefox-gnome-theme/userChrome.css";
|
|
||||||
'';
|
|
||||||
userContent = ''
|
|
||||||
@import "firefox-gnome-theme/userContent.css";
|
|
||||||
'';
|
|
||||||
settings = {
|
|
||||||
## GNOME theme
|
|
||||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; # Enable customChrome.css
|
|
||||||
"browser.uidensity" = 0; # Set UI density to normal
|
|
||||||
"svg.context-properties.content.enabled" = true; # Enable SVG context-propertes
|
|
||||||
"browser.theme.dark-private-windows" = false; # Disable private window dark theme
|
|
||||||
"widget.gtk.rounded-bottom-corners.enabled" = true; # Enable rounded bottom window corners
|
|
||||||
|
|
||||||
## Preferences
|
|
||||||
"browser.ctrlTab.sortByRecentlyUsed" = true;
|
|
||||||
"browser.discovery.enabled" = false;
|
|
||||||
"browser.download.open_pdf_attachments_inline" = true;
|
|
||||||
"browser.menu.showViewImageInfo" = true;
|
|
||||||
"browser.newtabpage.enabled" = false;
|
|
||||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
|
||||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
|
||||||
"browser.newtabpage.activity-stream.default.sites" = "";
|
|
||||||
"browser.privatebrowsing.forceMediaMemoryCache" = true;
|
|
||||||
"browser.search.widget.inNavBar" = true;
|
|
||||||
"browser.startup.page" = 3;
|
|
||||||
"browser.startup.homepage" = "https://www.vimium.com";
|
|
||||||
"browser.toolbars.bookmarks.visibility" = "never";
|
|
||||||
"browser.uitour.enabled" = false;
|
|
||||||
"browser.urlbar.suggest.engines" = false;
|
|
||||||
"browser.urlbar.suggest.calculator" = true;
|
|
||||||
"browser.urlbar.trending.featureGate" = false;
|
|
||||||
"browser.urlbar.unitConversion.enabled" = true;
|
|
||||||
"cookiebanners.service.mode" = 1;
|
|
||||||
"cookiebanners.service.mode.privateBrowsing" = 1;
|
|
||||||
"network.IDN_show_punycode" = true;
|
|
||||||
|
|
||||||
## Performance
|
|
||||||
"browser.cache.jsbc_compression_level" = 3;
|
|
||||||
"content.notify.interval" = 100000;
|
|
||||||
"dom.enable_web_task_scheduling" = true;
|
|
||||||
"dom.security.sanitizer.enabled" = true;
|
|
||||||
"gfx.canvas.accelerated.cache-items" = 4096;
|
|
||||||
"gfx.canvas.accelerated.cache-size" = 512;
|
|
||||||
"gfx.content.skia-font-cache-size" = 20;
|
|
||||||
"gfx.webrender.all" = true;
|
|
||||||
"gfx.webrender.compositor" = true;
|
|
||||||
"gfx.webrender.enable" = true;
|
|
||||||
"image.mem.decode_bytes_at_a_time" = 32768;
|
|
||||||
"layers.acceleration.force-enabled" = true;
|
|
||||||
"layout.css.grid-template-masonry-value.enabled" = true;
|
|
||||||
"media.ffmpeg.vaapi.enabled" = true;
|
|
||||||
"media.memory_cache_max_size" = 65536;
|
|
||||||
"media.cache_readahead_limit" = 7200;
|
|
||||||
"media.cache_resume_threshold" = 3600;
|
|
||||||
"network.dns.disablePrefetch" = true;
|
|
||||||
"network.dns.disablePrefetchFromHTTPS" = true;
|
|
||||||
"network.dnsCacheExpiration" = 3600;
|
|
||||||
"network.http.max-connections" = 1800;
|
|
||||||
"network.http.max-persistent-connections-per-server" = 10;
|
|
||||||
"network.http.max-urgent-start-excessive-connections-per-host" = 5;
|
|
||||||
"network.http.pacing.requests.enabled" = false;
|
|
||||||
"network.predictor.enabled" = false;
|
|
||||||
"network.prefetch-next" = false;
|
|
||||||
"network.ssl_tokens_cache_capacity" = 10240;
|
|
||||||
"pdfjs.enableScripting" = false;
|
|
||||||
"security.mixed_content.block_display_content" = true;
|
|
||||||
|
|
||||||
## Experiments
|
|
||||||
"app.normandy.enabled" = false;
|
|
||||||
"app.normandy.api_url" = "";
|
|
||||||
"app.normandy.user_id" = "";
|
|
||||||
"app.shield.optoutstudies.enabled" = false;
|
|
||||||
"browser.shopping.experience2023.active" = false;
|
|
||||||
"browser.shopping.experience2023.enabled" = false;
|
|
||||||
"extensions.screenshots.disabled" = true;
|
|
||||||
"extensions.screenshots.upload-disabled" = true;
|
|
||||||
"experiments.supported" = false;
|
|
||||||
"experiments.enabled" = false;
|
|
||||||
"experiments.manifest.uri" = "";
|
|
||||||
"network.allow-experiments" = false;
|
|
||||||
|
|
||||||
## Privacy
|
|
||||||
"dom.private-attribution.submission.enabled" = false;
|
|
||||||
# "privacy.resistFingerprinting" = true;
|
|
||||||
"privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts" = false;
|
|
||||||
"privacy.trackingprotection.enabled" = true;
|
|
||||||
"privacy.trackingprotection.pbmode.enabled" = true;
|
|
||||||
"privacy.userContext.enabled" = true;
|
|
||||||
|
|
||||||
## Geo
|
|
||||||
"geo.enabled" = false;
|
|
||||||
"geo.provider.use_gpsd" = false;
|
|
||||||
"geo.wifi.uri" = "";
|
|
||||||
"browser.search.geoip.url" = "";
|
|
||||||
"browser.search.geoSpecificDefaults" = false;
|
|
||||||
"browser.search.geoSpecificDefaults.url" = "";
|
|
||||||
|
|
||||||
## Window meddling / popups
|
|
||||||
"dom.disable_window_open_feature.close" = true;
|
|
||||||
"dom.disable_window_open_feature.location" = true;
|
|
||||||
"dom.disable_window_open_feature.menubar" = true;
|
|
||||||
"dom.disable_window_open_feature.minimizable" = true;
|
|
||||||
"dom.disable_window_open_feature.personalbar" = true;
|
|
||||||
"dom.disable_window_open_feature.resizable" = true;
|
|
||||||
"dom.disable_window_open_feature.status" = true;
|
|
||||||
"dom.disable_window_open_feature.titlebar" = true;
|
|
||||||
"dom.disable_window_open_feature.toolbar" = true;
|
|
||||||
"dom.disable_window_move_resize" = true;
|
|
||||||
"browser.link.open_newwindow" = 3;
|
|
||||||
"browser.link.open_newwindow.restriction" = 0;
|
|
||||||
"dom.disable_open_during_load" = true;
|
|
||||||
"dom.popup_allowed_events" = "click dblclick";
|
|
||||||
|
|
||||||
## Workers
|
|
||||||
# "dom.serviceWorkers.enabled" = false;
|
|
||||||
"dom.push.enabled" = false;
|
|
||||||
"dom.webnotifications.enabled" = false;
|
|
||||||
"dom.webnotifications.serviceworker.enabled" = false;
|
|
||||||
"permissions.default.desktop-notification" = 2;
|
|
||||||
|
|
||||||
## DOM / JavaScript
|
|
||||||
# "dom.event.clipboardevents.enabled" = false;
|
|
||||||
"middlemouse.paste" = false;
|
|
||||||
# "dom.allow_cut_copy" = false;
|
|
||||||
"dom.disable_beforeunload" = true;
|
|
||||||
"dom.vibrator.enabled" = false;
|
|
||||||
# "javascript.options.asmjs" = false;
|
|
||||||
# "javascript.options.wasm" = false;
|
|
||||||
"dom.targetBlankNoOpener.enabled" = true;
|
|
||||||
|
|
||||||
## Hardware fingerprinting
|
|
||||||
"dom.battery.enabled" = false;
|
|
||||||
"dom.vr.enabled" = false;
|
|
||||||
"media.navigator.enabled" = false;
|
|
||||||
# "dom.webaudio.enabled" = false;
|
|
||||||
|
|
||||||
## Isolation
|
|
||||||
"privacy.firstparty.isolate" = true;
|
|
||||||
"privacy.firstparty.isolate.restrict_opener_access" = true;
|
|
||||||
|
|
||||||
## Telemetry
|
|
||||||
"beacon.enabled" = false;
|
|
||||||
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
|
|
||||||
"browser.newtabpage.activity-stream.telemetry" = false;
|
|
||||||
"browser.send_pings" = false;
|
|
||||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
|
||||||
"datareporting.healthReport.uploadEnabled" = false;
|
|
||||||
"toolkit.coverage.opt-out" = true;
|
|
||||||
"toolkit.coverage.endpoint.base" = "";
|
|
||||||
"toolkit.telemetry.archive.enabled" = false;
|
|
||||||
"toolkit.telemetry.bhrPing.enabled" = false;
|
|
||||||
"toolkit.telemetry.coverage.opt-out" = true;
|
|
||||||
"toolkit.telemetry.enabled" = false;
|
|
||||||
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
|
||||||
"toolkit.telemetry.hybridContent.enabled" = false;
|
|
||||||
"toolkit.telemetry.newProfilePing.enabled" = false;
|
|
||||||
"toolkit.telemetry.reportingPolicy.firstRun" = false;
|
|
||||||
"toolkit.telemetry.server" = "data:,";
|
|
||||||
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
|
||||||
"toolkit.telemetry.unified" = false;
|
|
||||||
"toolkit.telemetry.updatePing.enabled" = false;
|
|
||||||
|
|
||||||
## Pocket/Hello
|
|
||||||
"loop.enabled" = false;
|
|
||||||
"loop.feedback.baseUrl" = "";
|
|
||||||
"loop.gettingStarted.url" = "";
|
|
||||||
"loop.learnMoreUrl" = "";
|
|
||||||
"loop.legal.ToS_url" = "";
|
|
||||||
"loop.legal.privacy_url" = "";
|
|
||||||
"loop.oauth.google.redirect_uri" = "";
|
|
||||||
"loop.oauth.google.scope" = "";
|
|
||||||
"loop.server" = "";
|
|
||||||
"loop.soft_start_hostname" = "";
|
|
||||||
"loop.support_url" = "";
|
|
||||||
"loop.throttled2" = false;
|
|
||||||
"loop.logDomains" = false;
|
|
||||||
"browser.pocket.enabled" = false;
|
|
||||||
"browser.pocket.api" = "";
|
|
||||||
"browser.pocket.site" = "";
|
|
||||||
"browser.pocket.oAuthConsumerKey" = "";
|
|
||||||
"browser.pocket.useLocaleList" = false;
|
|
||||||
"brwoser.pocket.enabledLocales" = "";
|
|
||||||
|
|
||||||
## Plugins
|
|
||||||
"plugin.state.flash" = 0;
|
|
||||||
"plugin.state.java" = 0;
|
|
||||||
|
|
||||||
## Misc
|
|
||||||
"browser.selfsupport.url" = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.forensics;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.forensics = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
acquire
|
|
||||||
afflib
|
|
||||||
autopsy
|
|
||||||
fatcat
|
|
||||||
foremost
|
|
||||||
hstsparser
|
|
||||||
networkminer
|
|
||||||
sleuthkit
|
|
||||||
testdisk-qt
|
|
||||||
tracee
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.git;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.git = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home.programs.git = {
|
|
||||||
enable = true;
|
|
||||||
aliases = {
|
|
||||||
amend = "commit --amend";
|
|
||||||
lg = "log --color --graph --abbrev-commit --";
|
|
||||||
ls = "ls-files";
|
|
||||||
unadd = "reset HEAD";
|
|
||||||
undo-commit = "reset --soft \"HEAD^\"";
|
|
||||||
};
|
|
||||||
userEmail = "jordan@vimium.com";
|
|
||||||
userName = "Jordan Holt";
|
|
||||||
signing = {
|
|
||||||
key = "B8CFFF61F1CCF520";
|
|
||||||
signByDefault = true;
|
|
||||||
};
|
|
||||||
extraConfig = {
|
|
||||||
rebase.autosquash = true;
|
|
||||||
push.default = "current";
|
|
||||||
pull.rebase = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.configFile = {
|
|
||||||
"git/ignore".source = ./ignore;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
# CMake
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Linux trash folder
|
|
||||||
.Trash-*
|
|
||||||
|
|
||||||
# Swap
|
|
||||||
[._]*.s[a-v][a-z]
|
|
||||||
[._]*.sw[a-p]
|
|
||||||
[._]s[a-rt-v][a-z]
|
|
||||||
[._]ss[a-gi-z]
|
|
||||||
[._]sw[a-p]
|
|
||||||
|
|
||||||
# Session
|
|
||||||
Session.vim
|
|
||||||
Sessionx.vim
|
|
||||||
|
|
||||||
# Temporary
|
|
||||||
.netrwhist
|
|
||||||
*~
|
|
||||||
# Auto-generated tag files
|
|
||||||
tags
|
|
||||||
# Persistent undo
|
|
||||||
[._]*.un~
|
|
@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.gpg;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.gpg = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home.programs.gpg = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.services.gpg-agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSshSupport = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.graphics;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.graphics = {
|
|
||||||
modeling.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
raster.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
vector.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
(lib.mkIf cfg.modeling.enable blender)
|
|
||||||
(lib.mkIf cfg.raster.enable gimp)
|
|
||||||
(lib.mkIf cfg.raster.enable krita)
|
|
||||||
(lib.mkIf cfg.vector.enable inkscape)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.libreoffice;
|
|
||||||
in
|
|
||||||
# libreoffice-gtk4 = pkgs.libreoffice.override {
|
|
||||||
# extraMakeWrapperArgs = [
|
|
||||||
# "--set SAL_USE_VCLPLUGIN gtk4"
|
|
||||||
# ];
|
|
||||||
# unwrapped = pkgs.libreoffice-unwrapped.overrideAttrs (oldAttrs: {
|
|
||||||
# buildInputs = oldAttrs.buildInputs ++ [
|
|
||||||
# pkgs.gtk4
|
|
||||||
# ];
|
|
||||||
# configureFlags = oldAttrs.configureFlags ++ [
|
|
||||||
# "--disable-werror"
|
|
||||||
# "--enable-gtk4"
|
|
||||||
# ];
|
|
||||||
# passthru = oldAttrs.passthru // {
|
|
||||||
# inherit (pkgs) gtk4;
|
|
||||||
# };
|
|
||||||
# });
|
|
||||||
# };
|
|
||||||
{
|
|
||||||
options.modules.programs.libreoffice = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
(if config.modules.system.desktop.kde.enable == true then libreoffice-qt else libreoffice)
|
|
||||||
hunspell
|
|
||||||
hunspellDicts.en-gb-large
|
|
||||||
hunspellDicts.en-us-large
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.lutris;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.lutris = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
(lutris.override {
|
|
||||||
extraPkgs = pkgs: [
|
|
||||||
winePackages.staging
|
|
||||||
wine64Packages.staging
|
|
||||||
];
|
|
||||||
})
|
|
||||||
vulkan-loader
|
|
||||||
vulkan-tools
|
|
||||||
];
|
|
||||||
|
|
||||||
hardware.graphics = {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,146 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.neovim;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.neovim = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home.programs.nixvim.config = {
|
|
||||||
enable = true;
|
|
||||||
defaultEditor = true;
|
|
||||||
|
|
||||||
viAlias = true;
|
|
||||||
vimAlias = true;
|
|
||||||
|
|
||||||
options = {
|
|
||||||
number = true;
|
|
||||||
tabstop = 2;
|
|
||||||
shiftwidth = 2;
|
|
||||||
expandtab = true;
|
|
||||||
foldlevel = 99;
|
|
||||||
splitbelow = true;
|
|
||||||
splitright = true;
|
|
||||||
undofile = true;
|
|
||||||
updatetime = 100;
|
|
||||||
list = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
globals = {
|
|
||||||
mapleader = ",";
|
|
||||||
maplocalleader = ",";
|
|
||||||
};
|
|
||||||
|
|
||||||
clipboard = {
|
|
||||||
register = "unnamedplus";
|
|
||||||
|
|
||||||
providers.wl-copy.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.comment.enable = true;
|
|
||||||
|
|
||||||
plugins.hmts.enable = true;
|
|
||||||
|
|
||||||
plugins.lightline.enable = true;
|
|
||||||
|
|
||||||
plugins.luasnip.enable = true;
|
|
||||||
|
|
||||||
plugins.lsp = {
|
|
||||||
enable = true;
|
|
||||||
servers = {
|
|
||||||
bashls.enable = true;
|
|
||||||
ccls.enable = true;
|
|
||||||
cssls.enable = true;
|
|
||||||
eslint.enable = true;
|
|
||||||
gopls.enable = true;
|
|
||||||
html.enable = true;
|
|
||||||
lua_ls.enable = true;
|
|
||||||
pylsp.enable = true;
|
|
||||||
nixd.enable = true;
|
|
||||||
rust_analyzer = {
|
|
||||||
enable = true;
|
|
||||||
installCargo = true;
|
|
||||||
installRustc = true;
|
|
||||||
};
|
|
||||||
ts_ls.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.nvim-autopairs.enable = true;
|
|
||||||
|
|
||||||
plugins.cmp = {
|
|
||||||
enable = true;
|
|
||||||
autoEnableSources = true;
|
|
||||||
settings = {
|
|
||||||
sources = [
|
|
||||||
{ name = "nvim_lsp"; }
|
|
||||||
{ name = "path"; }
|
|
||||||
{ name = "buffer"; }
|
|
||||||
];
|
|
||||||
mapping = {
|
|
||||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
|
||||||
"<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
|
|
||||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.telescope = {
|
|
||||||
enable = true;
|
|
||||||
keymaps = {
|
|
||||||
"<leader>ff" = "find_files";
|
|
||||||
"<leader>fg" = "live_grep";
|
|
||||||
"<leader>b" = "buffers";
|
|
||||||
"<leader>fh" = "help_tags";
|
|
||||||
"<C-p>" = "git_files";
|
|
||||||
"<C-f>" = "live_grep";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.treesitter = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
nixvimInjections = true;
|
|
||||||
|
|
||||||
folding = true;
|
|
||||||
settings.indent.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.treesitter-refactor = {
|
|
||||||
enable = true;
|
|
||||||
highlightDefinitions = {
|
|
||||||
enable = true;
|
|
||||||
clearOnCursorMove = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins.undotree.enable = true;
|
|
||||||
|
|
||||||
plugins.web-devicons.enable = true;
|
|
||||||
|
|
||||||
# plugins.gitsigns.enable = true;
|
|
||||||
# plugins.gitgutter.enable = true;
|
|
||||||
# plugins.goyo.enable = true;
|
|
||||||
# plugins.fugitive.enable = true;
|
|
||||||
# plugins.fzf-lua.enable = true;
|
|
||||||
# plugins.neo-tree.enable = true;
|
|
||||||
# plugins.none-ls.enable = true;
|
|
||||||
# plugins.nvim-tree.enable = true;
|
|
||||||
# plugins.oil.enable = true;
|
|
||||||
# plugins.project-nvim.enable = true;
|
|
||||||
# plugins.surround.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
env.EDITOR = "nvim";
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.pass;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.pass = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home.programs.password-store = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.pass.withExtensions (exts: [ exts.pass-otp ]);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.qbittorrent;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.qbittorrent = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
qbittorrent
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.recording;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.recording = {
|
|
||||||
audio.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
video.enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
user.packages =
|
|
||||||
with pkgs;
|
|
||||||
(
|
|
||||||
if cfg.audio.enable then
|
|
||||||
[
|
|
||||||
ardour
|
|
||||||
audacity
|
|
||||||
]
|
|
||||||
else
|
|
||||||
[ ]
|
|
||||||
)
|
|
||||||
++ (
|
|
||||||
if cfg.video.enable then
|
|
||||||
[
|
|
||||||
handbrake
|
|
||||||
mkvtoolnix
|
|
||||||
obs-studio
|
|
||||||
]
|
|
||||||
else
|
|
||||||
[ ]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.slack;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.slack = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
slack
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.steam;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.steam = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
programs.steam.enable = true;
|
|
||||||
|
|
||||||
systemd.extraConfig = "DefaultLimitNOFILE=1048576";
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
self,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.thunderbird;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.thunderbird = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home.file.".thunderbird/Default/chrome/thunderbird-gnome-theme".source =
|
|
||||||
self.inputs.thunderbird-gnome-theme;
|
|
||||||
|
|
||||||
home.programs.thunderbird = {
|
|
||||||
enable = true;
|
|
||||||
profiles.Default = {
|
|
||||||
isDefault = true;
|
|
||||||
userChrome = ''
|
|
||||||
@import "thunderbird-gnome-theme/userChrome.css";
|
|
||||||
'';
|
|
||||||
userContent = ''
|
|
||||||
@import "thunderbird-gnome-theme/userContent.css";
|
|
||||||
'';
|
|
||||||
settings = {
|
|
||||||
## GNOME theme
|
|
||||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
|
||||||
"svg.context-properties.content.enabled" = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.vscode;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.vscode = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
|
||||||
|
|
||||||
home.programs.vscode = {
|
|
||||||
enable = true;
|
|
||||||
extensions = with pkgs.vscode-extensions; [
|
|
||||||
asvetliakov.vscode-neovim
|
|
||||||
brettm12345.nixfmt-vscode
|
|
||||||
coolbear.systemd-unit-file
|
|
||||||
editorconfig.editorconfig
|
|
||||||
golang.go
|
|
||||||
graphql.vscode-graphql-syntax
|
|
||||||
mattn.lisp
|
|
||||||
# mkhl.direnv
|
|
||||||
ms-python.vscode-pylance
|
|
||||||
ms-vscode.cpptools
|
|
||||||
ms-vscode.hexeditor
|
|
||||||
piousdeer.adwaita-theme
|
|
||||||
# redhat.java
|
|
||||||
# sumneko.lua
|
|
||||||
];
|
|
||||||
userSettings = {
|
|
||||||
"editor.renderLineHighlight" = "none";
|
|
||||||
"extensions.experimental.affinity" = {
|
|
||||||
"asvetliakov.vscode-neovim" = 1;
|
|
||||||
};
|
|
||||||
"files.autoSave" = "off";
|
|
||||||
"window.autoDetectColorScheme" = true;
|
|
||||||
"window.commandCenter" = true;
|
|
||||||
"window.titleBarStyle" = "custom";
|
|
||||||
"workbench.iconTheme" = null;
|
|
||||||
"workbench.preferredDarkColorTheme" = "Adwaita Dark";
|
|
||||||
"workbench.preferredLightColorTheme" = "Adwaita Light";
|
|
||||||
"workbench.tree.indent" = 12;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.programs.zoom;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.programs.zoom = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
zoom-us
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,193 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.shell.zsh;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.shell.zsh = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
users.defaultUserShell = pkgs.zsh;
|
|
||||||
|
|
||||||
home.programs = {
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
autocd = true;
|
|
||||||
autosuggestion = {
|
|
||||||
enable = true;
|
|
||||||
strategy = [ "completion" ];
|
|
||||||
};
|
|
||||||
defaultKeymap = "viins";
|
|
||||||
dotDir = ".config/zsh";
|
|
||||||
enableCompletion = true;
|
|
||||||
enableVteIntegration = true;
|
|
||||||
|
|
||||||
history = {
|
|
||||||
append = true;
|
|
||||||
extended = true;
|
|
||||||
ignoreAllDups = true;
|
|
||||||
ignoreDups = true;
|
|
||||||
ignoreSpace = true;
|
|
||||||
save = 1000000;
|
|
||||||
size = 1000000;
|
|
||||||
};
|
|
||||||
|
|
||||||
initExtra = ''
|
|
||||||
## Colors
|
|
||||||
autoload -U colors && colors
|
|
||||||
|
|
||||||
## Directories
|
|
||||||
setopt AUTO_PUSHD
|
|
||||||
setopt CDABLE_VARS
|
|
||||||
setopt PUSHD_IGNORE_DUPS
|
|
||||||
setopt PUSHD_SILENT
|
|
||||||
setopt PUSHD_TO_HOME
|
|
||||||
|
|
||||||
## Expansion and globbing
|
|
||||||
setopt EXTENDED_GLOB
|
|
||||||
unsetopt GLOB_DOTS
|
|
||||||
unsetopt NOMATCH
|
|
||||||
|
|
||||||
## History
|
|
||||||
setopt BANG_HIST
|
|
||||||
setopt HIST_VERIFY
|
|
||||||
setopt INC_APPEND_HISTORY_TIME
|
|
||||||
|
|
||||||
## I/O
|
|
||||||
setopt INTERACTIVE_COMMENTS
|
|
||||||
setopt MULTIOS
|
|
||||||
unsetopt CLOBBER
|
|
||||||
|
|
||||||
## Jobs
|
|
||||||
setopt LONG_LIST_JOBS
|
|
||||||
setopt AUTO_RESUME
|
|
||||||
unsetopt BG_NICE
|
|
||||||
unsetopt NOTIFY
|
|
||||||
unsetopt HUP
|
|
||||||
unsetopt CHECK_JOBS
|
|
||||||
|
|
||||||
## Shell emulation
|
|
||||||
setopt APPEND_CREATE
|
|
||||||
|
|
||||||
## Prompt
|
|
||||||
PS1="%B%{$fg[magenta]%}%~%{$reset_color%} $%b "
|
|
||||||
|
|
||||||
## Vi mode
|
|
||||||
export KEYTIMEOUT=1
|
|
||||||
|
|
||||||
## Zsh line editor
|
|
||||||
unsetopt BEEP
|
|
||||||
'';
|
|
||||||
|
|
||||||
initExtraBeforeCompInit = ''
|
|
||||||
setopt HASH_LIST_ALL
|
|
||||||
'';
|
|
||||||
|
|
||||||
localVariables = {
|
|
||||||
# Prevent zsh-vi-mode overriding other keybinds
|
|
||||||
ZVM_INIT_MODE = "sourcing";
|
|
||||||
};
|
|
||||||
|
|
||||||
plugins = with pkgs; [
|
|
||||||
{
|
|
||||||
name = "zsh-vi-mode";
|
|
||||||
src = zsh-vi-mode;
|
|
||||||
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "fast-syntax-highlighting";
|
|
||||||
src = zsh-fast-syntax-highlighting;
|
|
||||||
file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "jq-zsh-plugin";
|
|
||||||
src = jq-zsh-plugin;
|
|
||||||
file = "share/jq-zsh-plugin/jq.plugin.zsh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "zsh-autopair";
|
|
||||||
src = zsh-autopair;
|
|
||||||
file = "share/zsh/zsh-autopair/autopair.zsh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "zsh-forgit";
|
|
||||||
src = zsh-forgit;
|
|
||||||
file = "share/zsh/zsh-forgit/forgit.plugin.zsh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "zsh-fzf-tab";
|
|
||||||
src = zsh-fzf-tab;
|
|
||||||
file = "share/fzf-tab/fzf-tab.plugin.zsh";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
sessionVariables = {
|
|
||||||
MODE_INDICATOR = "";
|
|
||||||
MODE_CURSOR_VIINS = "#b77ee0 blinking bar";
|
|
||||||
MODE_CURSOR_REPLACE = "$MODE_CURSOR_VIINS #ff3334";
|
|
||||||
MODE_CURSOR_VICMD = "#b77ee0 block";
|
|
||||||
MODE_CURSOR_SEARCH = "#e7c547 steady underline";
|
|
||||||
MODE_CURSOR_VISUAL = "$MODE_CURSOR_VICMD steady bar";
|
|
||||||
MODE_CURSOR_VLINE = "$MODE_CURSOR_VISUAL #54ced6";
|
|
||||||
ZVM_LINE_INIT_MODE = "i";
|
|
||||||
};
|
|
||||||
|
|
||||||
shellAliases = {
|
|
||||||
# Verbose file operations
|
|
||||||
cp = "cp -iv";
|
|
||||||
mv = "mv -iv";
|
|
||||||
rm = "rm -v";
|
|
||||||
mkdir = "mkdir -v";
|
|
||||||
|
|
||||||
# Colorize commands
|
|
||||||
ls = "ls -h --color=auto --group-directories-first";
|
|
||||||
|
|
||||||
# Abbreviations
|
|
||||||
e = "$EDITOR";
|
|
||||||
f = "$FILE";
|
|
||||||
g = "git";
|
|
||||||
m = "neomutt";
|
|
||||||
n = "$FILE";
|
|
||||||
v = "$EDITOR";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
broot.enable = true;
|
|
||||||
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
fzf = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
package = pkgs.unstable.fzf;
|
|
||||||
};
|
|
||||||
|
|
||||||
mcfly.enable = true;
|
|
||||||
navi.enable = true;
|
|
||||||
nix-index.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
bat
|
|
||||||
btop
|
|
||||||
fd
|
|
||||||
jq
|
|
||||||
nix-zsh-completions
|
|
||||||
nnn
|
|
||||||
ripgrep
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -6,8 +6,6 @@
|
|||||||
./services/postgresql.nix
|
./services/postgresql.nix
|
||||||
./services/tailscale.nix
|
./services/tailscale.nix
|
||||||
./system/desktop/gnome.nix
|
./system/desktop/gnome.nix
|
||||||
./system/desktop/hyprland.nix
|
|
||||||
./system/desktop/kde.nix
|
|
||||||
./system/desktop/mimeapps.nix
|
./system/desktop/mimeapps.nix
|
||||||
./system/wireless.nix
|
./system/wireless.nix
|
||||||
];
|
];
|
||||||
|
@ -21,8 +21,6 @@ in
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
docker.enable = false;
|
|
||||||
|
|
||||||
podman = {
|
podman = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
defaultNetwork.settings.dns_enabled = true;
|
||||||
@ -40,7 +38,6 @@ in
|
|||||||
runroot = "/run/containers/storage";
|
runroot = "/run/containers/storage";
|
||||||
};
|
};
|
||||||
|
|
||||||
oci-containers.backend = "podman";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall.interfaces."podman+" = {
|
networking.firewall.interfaces."podman+" = {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ in
|
|||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
age.secrets."passwords/services/borg/${hostname}-passphrase" = {
|
age.secrets."passwords/services/borg/${hostname}-passphrase" = {
|
||||||
file = "${self.inputs.secrets}/passwords/services/borg/${hostname}-passphrase.age";
|
file = "${inputs.secrets}/passwords/services/borg/${hostname}-passphrase.age";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.borgmatic = {
|
services.borgmatic = {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ in
|
|||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
age.secrets."passwords/services/tailscale/${hostname}-authkey" = {
|
age.secrets."passwords/services/tailscale/${hostname}-authkey" = {
|
||||||
file = "${self.inputs.secrets}/passwords/services/tailscale/${hostname}-authkey.age";
|
file = "${inputs.secrets}/passwords/services/tailscale/${hostname}-authkey.age";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.tailscale ];
|
environment.systemPackages = [ pkgs.tailscale ];
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -28,229 +27,6 @@ in
|
|||||||
services.fwupd.enable = true;
|
services.fwupd.enable = true;
|
||||||
|
|
||||||
programs.dconf.enable = true;
|
programs.dconf.enable = true;
|
||||||
dconf.settings = {
|
|
||||||
"io/github/celluloid-player/celluloid" = {
|
|
||||||
draggable-video-area-enable = true;
|
|
||||||
};
|
|
||||||
"org/gnome/Console" = {
|
|
||||||
font-scale = 1.4;
|
|
||||||
use-system-font = false;
|
|
||||||
custom-font = "ComicShannsMono Nerd Font 10";
|
|
||||||
};
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
color-scheme = "prefer-dark";
|
|
||||||
cursor-theme = "Adwaita";
|
|
||||||
enable-hot-corners = false;
|
|
||||||
font-name = "Adwaita Sans 11";
|
|
||||||
gtk-theme = "adw-gtk3-dark";
|
|
||||||
icon-theme = "MoreWaita";
|
|
||||||
monospace-font-name = "Adwaita Mono 11";
|
|
||||||
toolbar-style = "both-horiz";
|
|
||||||
};
|
|
||||||
"org/gnome/desktop/peripherals/touchpad" = {
|
|
||||||
tap-to-click = true;
|
|
||||||
};
|
|
||||||
"org/gnome/desktop/sound" = {
|
|
||||||
theme-name = "freedesktop";
|
|
||||||
};
|
|
||||||
"org/gnome/desktop/search-providers" = {
|
|
||||||
disabled = [ "org.gnome.Epiphany.desktop" ];
|
|
||||||
};
|
|
||||||
"org/gnome/desktop/wm/keybindings" = {
|
|
||||||
switch-group = [ "<Super>grave" ];
|
|
||||||
switch-group-backward = [ "<Shift><Super>grave" ];
|
|
||||||
};
|
|
||||||
"org/gnome/desktop/wm/preferences" = {
|
|
||||||
button-layout = "appmenu:close";
|
|
||||||
};
|
|
||||||
"org/gnome/gnome-session" = {
|
|
||||||
auto-save-session = true;
|
|
||||||
};
|
|
||||||
"org/gnome/gnome-system-monitor" = {
|
|
||||||
show-dependencies = true;
|
|
||||||
};
|
|
||||||
"org/gnome/mutter" = {
|
|
||||||
center-new-windows = true;
|
|
||||||
edge-tiling = true;
|
|
||||||
experimental-features = [ "scale-monitor-framebuffer" ];
|
|
||||||
};
|
|
||||||
"org/gnome/settings-daemon/plugins/media-keys" = {
|
|
||||||
volume-up = [
|
|
||||||
"<Shift>F12"
|
|
||||||
"XF86AudioRaiseVolume"
|
|
||||||
];
|
|
||||||
volume-down = [
|
|
||||||
"<Shift>F11"
|
|
||||||
"XF86AudioLowerVolume"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"org/gnome/shell" = {
|
|
||||||
disable-user-extensions = false;
|
|
||||||
enabled-extensions = [
|
|
||||||
"appindicatorsupport@rgcjonas.gmail.com"
|
|
||||||
# "arcmenu@arcmenu.com"
|
|
||||||
"blur-my-shell@aunetx"
|
|
||||||
"burn-my-windows@schneegans.github.com"
|
|
||||||
"clipboard-indicator@tudmotu.com"
|
|
||||||
"CoverflowAltTab@palatis.blogspot.com"
|
|
||||||
# "dash-to-panel@jderose9.github.com"
|
|
||||||
# "desktop-cube@schneegans.github.com"
|
|
||||||
# "EasyScreenCast@iacopodeenosee.gmail.com"
|
|
||||||
"espresso@coadmunkee.github.com"
|
|
||||||
"flypie@schneegans.github.com"
|
|
||||||
# "forge@jmmaranan.com"
|
|
||||||
"gsconnect@andyholmes.github.io"
|
|
||||||
# "gSnap@micahosborne"
|
|
||||||
"hidetopbar@mathieu.bidon.ca"
|
|
||||||
"just-perfection-desktop@just-perfection"
|
|
||||||
# "mediacontrols@cliffniff.github.com"
|
|
||||||
# "mousefollowsfocus@matthes.biz"
|
|
||||||
# "pano@elhan.io"
|
|
||||||
# "paperwm@hedning:matrix.org"
|
|
||||||
"pip-on-top@rafostar.github.com"
|
|
||||||
# "search-light@icedman.github.com"
|
|
||||||
# "smart-auto-move@khimaros.com"
|
|
||||||
"space-bar@luchrioh"
|
|
||||||
# "tiling-assistant@leleat-on-github"
|
|
||||||
"tilingshell@ferrarodomenico.com"
|
|
||||||
"Vitals@CoreCoding.com"
|
|
||||||
"windowIsReady_Remover@nunofarruca@gmail.com"
|
|
||||||
# "worksets@blipk.xyz"
|
|
||||||
# "wsmatrix@martin.zurowietz.de"
|
|
||||||
];
|
|
||||||
favorite-apps = [
|
|
||||||
"firefox.desktop"
|
|
||||||
"org.gnome.Nautilus.desktop"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/blur-my-shell/panel" = {
|
|
||||||
static-blur = true;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/blur-my-shell/applications" = {
|
|
||||||
blur = false;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/burn-my-windows" = {
|
|
||||||
fire-close-effect = false;
|
|
||||||
glide-open-effect = true;
|
|
||||||
glide-close-effect = true;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/dash-to-panel" = {
|
|
||||||
intellihide = true;
|
|
||||||
panel-positions = ''
|
|
||||||
{"0":"TOP"}
|
|
||||||
'';
|
|
||||||
trans-panel-opacity = 0.3;
|
|
||||||
trans-use-custom-opacity = true;
|
|
||||||
trans-use-dynamic-opacity = true;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/espresso" = {
|
|
||||||
enable-fullscreen = true;
|
|
||||||
show-indicator = true;
|
|
||||||
show-notifications = false;
|
|
||||||
inhibit-apps = [
|
|
||||||
"com.obsproject.Studio.desktop"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/flypie" = {
|
|
||||||
preview-on-right-side = true;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/forge" = {
|
|
||||||
window-gap-size = 8;
|
|
||||||
window-gap-hidden-on-single = false;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/hidetopbar" = {
|
|
||||||
mouse-sensitive = true;
|
|
||||||
mouse-sensitive-fullscreen-window = true;
|
|
||||||
enable-active-window = false;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/just-perfection" = {
|
|
||||||
activities-button = false;
|
|
||||||
window-demands-attention-focus = true;
|
|
||||||
workspace-wrap-around = true;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/paperwm" = {
|
|
||||||
use-default-background = true;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/pip-on-top" = {
|
|
||||||
stick = true;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/search-light" = {
|
|
||||||
popup-at-cursor-monitor = true;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/space-bar/behavior" = {
|
|
||||||
enable-activate-workspace-shortcuts = true;
|
|
||||||
show-empty-workspaces = true;
|
|
||||||
smart-workspace-names = false;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/tiling-assistant" = {
|
|
||||||
screen-top-gap = 8;
|
|
||||||
screen-right-gap = 8;
|
|
||||||
screen-bottom-gap = 8;
|
|
||||||
screen-left-gap = 8;
|
|
||||||
window-gap = 8;
|
|
||||||
};
|
|
||||||
"org/gnome/shell/extensions/tilingshell" = {
|
|
||||||
inner-gaps = 16;
|
|
||||||
outer-gaps = 8;
|
|
||||||
enable-blur-snap-assistant = true;
|
|
||||||
};
|
|
||||||
"org/gtk/settings/file-chooser" = {
|
|
||||||
show-hidden = true;
|
|
||||||
sort-directories-first = true;
|
|
||||||
};
|
|
||||||
"org/gtk/gtk4/settings/file-chooser" = {
|
|
||||||
show-hidden = true;
|
|
||||||
sort-directories-first = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.sessionVariables = {
|
|
||||||
QT_STYLE_OVERRIDE = lib.mkForce "kvantum";
|
|
||||||
QT_WAYLAND_DECORATION = lib.mkForce "adwaita";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.configFile = {
|
|
||||||
"Kvantum/kvantum.kvconfig".text = lib.generators.toINI { } {
|
|
||||||
General.theme = "KvLibadwaitaDark";
|
|
||||||
};
|
|
||||||
"Kvantum/KvLibadwaita".source = "${self.inputs.kvlibadwaita}/src/KvLibadwaita";
|
|
||||||
};
|
|
||||||
|
|
||||||
user.packages =
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
authenticator
|
|
||||||
# bottles
|
|
||||||
# bustle
|
|
||||||
celluloid
|
|
||||||
# d-spy
|
|
||||||
# drawing
|
|
||||||
# fragments
|
|
||||||
dconf-editor
|
|
||||||
ghex
|
|
||||||
ghostty
|
|
||||||
# gnome-builder
|
|
||||||
gnome-decoder
|
|
||||||
gnome-firmware
|
|
||||||
gnome-frog
|
|
||||||
# gnome-obfuscate
|
|
||||||
gnome-podcasts
|
|
||||||
identity
|
|
||||||
# mission-center
|
|
||||||
mousam
|
|
||||||
newsflash
|
|
||||||
# schemes
|
|
||||||
shortwave
|
|
||||||
sysprof
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
if config.virtualisation.podman.enable then
|
|
||||||
[
|
|
||||||
pods
|
|
||||||
]
|
|
||||||
else
|
|
||||||
[ ]
|
|
||||||
);
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs.unstable; [
|
environment.systemPackages = with pkgs.unstable; [
|
||||||
adw-gtk3
|
adw-gtk3
|
||||||
@ -295,7 +71,5 @@ in
|
|||||||
gnomeExtensions.worksets
|
gnomeExtensions.worksets
|
||||||
gnomeExtensions.workspace-matrix
|
gnomeExtensions.workspace-matrix
|
||||||
];
|
];
|
||||||
|
|
||||||
home.services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib)
|
|
||||||
mkIf
|
|
||||||
mkOption
|
|
||||||
;
|
|
||||||
cfg = config.modules.system.desktop.hyprland;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.system.desktop.hyprland = {
|
|
||||||
enable = mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
# withUWSM = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# programs.uwsm.enable = true;
|
|
||||||
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
user.packages = with pkgs.unstable; [
|
|
||||||
anyrun
|
|
||||||
clipse
|
|
||||||
hyprpaper
|
|
||||||
kitty
|
|
||||||
mpv
|
|
||||||
waybar
|
|
||||||
wl-clipboard
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
adw-gtk3
|
|
||||||
];
|
|
||||||
|
|
||||||
home.services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.system.desktop.kde;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.modules.system.desktop.kde = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
services = {
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
desktopManager.plasma6.enable = true;
|
|
||||||
displayManager.sddm = {
|
|
||||||
enable = true;
|
|
||||||
wayland.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
user.packages = with pkgs; [
|
|
||||||
kmail
|
|
||||||
mpv
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
adw-gtk3
|
|
||||||
];
|
|
||||||
|
|
||||||
home.services.gpg-agent.pinentryPackage = pkgs.pinentry-qt;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
self,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ in
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
age.secrets."passwords/networks" = {
|
age.secrets."passwords/networks" = {
|
||||||
file = "${self.inputs.secrets}/passwords/networks.age";
|
file = "${inputs.secrets}/passwords/networks.age";
|
||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
46
users/jordan/default.nix
Normal file
46
users/jordan/default.nix
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
name = "jordan";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
age.secrets."passwords/users/jordan".file = "${inputs.secrets}/passwords/users/jordan.age";
|
||||||
|
|
||||||
|
users.users.${name} = {
|
||||||
|
description = "Jordan Holt";
|
||||||
|
extraGroups = [
|
||||||
|
"audio"
|
||||||
|
"docker"
|
||||||
|
"lxd"
|
||||||
|
"networkmanager"
|
||||||
|
"wheel"
|
||||||
|
];
|
||||||
|
group = "users";
|
||||||
|
hashedPasswordFile = config.age.secrets."passwords/users/jordan".path;
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILVHTjsyMIV4THNw6yz0OxAxGnC+41gX72UrPqTzR+OS jordan@vimium.com"
|
||||||
|
];
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
uid = 1000;
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.${name} = {
|
||||||
|
imports = [
|
||||||
|
./git.nix
|
||||||
|
./gpg.nix
|
||||||
|
./graphical
|
||||||
|
./neovim.nix
|
||||||
|
./pass.nix
|
||||||
|
./shell.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home = {
|
||||||
|
username = name;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
42
users/jordan/git.nix
Normal file
42
users/jordan/git.nix
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
aliases = {
|
||||||
|
amend = "commit --amend";
|
||||||
|
lg = "log --color --graph --abbrev-commit --";
|
||||||
|
ls = "ls-files";
|
||||||
|
unadd = "reset HEAD";
|
||||||
|
undo-commit = "reset --soft \"HEAD^\"";
|
||||||
|
};
|
||||||
|
ignores = [
|
||||||
|
".Trash-*"
|
||||||
|
"[._]*.s[a-v][a-z]"
|
||||||
|
"[._]*.sw[a-p]"
|
||||||
|
"[._]s[a-rt-v][a-z]"
|
||||||
|
"[._]ss[a-gi-z]"
|
||||||
|
"[._]sw[a-p]"
|
||||||
|
"Session.vim"
|
||||||
|
"Sessionx.vim"
|
||||||
|
".netrwhist"
|
||||||
|
"*~"
|
||||||
|
"tags"
|
||||||
|
"[._]*.un~"
|
||||||
|
"cmake-build-*/"
|
||||||
|
];
|
||||||
|
userEmail = "jordan@vimium.com";
|
||||||
|
userName = "Jordan Holt";
|
||||||
|
signing = {
|
||||||
|
key = "B8CFFF61F1CCF520";
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
rebase.autosquash = true;
|
||||||
|
push.default = "current";
|
||||||
|
pull.rebase = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
14
users/jordan/gpg.nix
Normal file
14
users/jordan/gpg.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.gpg = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSshSupport = true;
|
||||||
|
};
|
||||||
|
}
|
36
users/jordan/graphical/default.nix
Normal file
36
users/jordan/graphical/default.nix
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
osConfig,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
./firefox.nix
|
||||||
|
./thunderbird.nix
|
||||||
|
]
|
||||||
|
++ lib.optionals osConfig.modules.system.desktop.gnome.enable [
|
||||||
|
./gnome.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# ardour
|
||||||
|
# audacity
|
||||||
|
# blender
|
||||||
|
# gimp
|
||||||
|
# handbrake
|
||||||
|
# hunspell
|
||||||
|
# hunspellDicts.en-gb-large
|
||||||
|
# hunspellDicts.en-us-large
|
||||||
|
# inkscape
|
||||||
|
# krita
|
||||||
|
# libreoffice
|
||||||
|
# mkvtoolnix
|
||||||
|
# obs-studio
|
||||||
|
qbittorrent
|
||||||
|
# slack
|
||||||
|
# zoom-us
|
||||||
|
];
|
||||||
|
}
|
209
users/jordan/graphical/firefox.nix
Normal file
209
users/jordan/graphical/firefox.nix
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.file.".mozilla/firefox/Default/chrome/firefox-gnome-theme".source = inputs.firefox-gnome-theme;
|
||||||
|
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
profiles.Default = {
|
||||||
|
search = {
|
||||||
|
default = "DuckDuckGo";
|
||||||
|
force = true;
|
||||||
|
};
|
||||||
|
userChrome = ''
|
||||||
|
@import "firefox-gnome-theme/userChrome.css";
|
||||||
|
'';
|
||||||
|
userContent = ''
|
||||||
|
@import "firefox-gnome-theme/userContent.css";
|
||||||
|
'';
|
||||||
|
settings = {
|
||||||
|
## GNOME theme
|
||||||
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; # Enable customChrome.css
|
||||||
|
"browser.uidensity" = 0; # Set UI density to normal
|
||||||
|
"svg.context-properties.content.enabled" = true; # Enable SVG context-propertes
|
||||||
|
"browser.theme.dark-private-windows" = false; # Disable private window dark theme
|
||||||
|
"widget.gtk.rounded-bottom-corners.enabled" = true; # Enable rounded bottom window corners
|
||||||
|
|
||||||
|
## Preferences
|
||||||
|
"browser.ctrlTab.sortByRecentlyUsed" = true;
|
||||||
|
"browser.discovery.enabled" = false;
|
||||||
|
"browser.download.open_pdf_attachments_inline" = true;
|
||||||
|
"browser.menu.showViewImageInfo" = true;
|
||||||
|
"browser.newtabpage.enabled" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
|
"browser.newtabpage.activity-stream.default.sites" = "";
|
||||||
|
"browser.privatebrowsing.forceMediaMemoryCache" = true;
|
||||||
|
"browser.search.widget.inNavBar" = true;
|
||||||
|
"browser.startup.page" = 3;
|
||||||
|
"browser.startup.homepage" = "https://www.vimium.com";
|
||||||
|
"browser.toolbars.bookmarks.visibility" = "never";
|
||||||
|
"browser.uitour.enabled" = false;
|
||||||
|
"browser.urlbar.suggest.engines" = false;
|
||||||
|
"browser.urlbar.suggest.calculator" = true;
|
||||||
|
"browser.urlbar.trending.featureGate" = false;
|
||||||
|
"browser.urlbar.unitConversion.enabled" = true;
|
||||||
|
"cookiebanners.service.mode" = 1;
|
||||||
|
"cookiebanners.service.mode.privateBrowsing" = 1;
|
||||||
|
"network.IDN_show_punycode" = true;
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
"browser.cache.jsbc_compression_level" = 3;
|
||||||
|
"content.notify.interval" = 100000;
|
||||||
|
"dom.enable_web_task_scheduling" = true;
|
||||||
|
"dom.security.sanitizer.enabled" = true;
|
||||||
|
"gfx.canvas.accelerated.cache-items" = 4096;
|
||||||
|
"gfx.canvas.accelerated.cache-size" = 512;
|
||||||
|
"gfx.content.skia-font-cache-size" = 20;
|
||||||
|
"gfx.webrender.all" = true;
|
||||||
|
"gfx.webrender.compositor" = true;
|
||||||
|
"gfx.webrender.enable" = true;
|
||||||
|
"image.mem.decode_bytes_at_a_time" = 32768;
|
||||||
|
"layers.acceleration.force-enabled" = true;
|
||||||
|
"layout.css.grid-template-masonry-value.enabled" = true;
|
||||||
|
"media.ffmpeg.vaapi.enabled" = true;
|
||||||
|
"media.memory_cache_max_size" = 65536;
|
||||||
|
"media.cache_readahead_limit" = 7200;
|
||||||
|
"media.cache_resume_threshold" = 3600;
|
||||||
|
"network.dns.disablePrefetch" = true;
|
||||||
|
"network.dns.disablePrefetchFromHTTPS" = true;
|
||||||
|
"network.dnsCacheExpiration" = 3600;
|
||||||
|
"network.http.max-connections" = 1800;
|
||||||
|
"network.http.max-persistent-connections-per-server" = 10;
|
||||||
|
"network.http.max-urgent-start-excessive-connections-per-host" = 5;
|
||||||
|
"network.http.pacing.requests.enabled" = false;
|
||||||
|
"network.predictor.enabled" = false;
|
||||||
|
"network.prefetch-next" = false;
|
||||||
|
"network.ssl_tokens_cache_capacity" = 10240;
|
||||||
|
"pdfjs.enableScripting" = false;
|
||||||
|
"security.mixed_content.block_display_content" = true;
|
||||||
|
|
||||||
|
## Experiments
|
||||||
|
"app.normandy.enabled" = false;
|
||||||
|
"app.normandy.api_url" = "";
|
||||||
|
"app.normandy.user_id" = "";
|
||||||
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
"browser.shopping.experience2023.active" = false;
|
||||||
|
"browser.shopping.experience2023.enabled" = false;
|
||||||
|
"extensions.screenshots.disabled" = true;
|
||||||
|
"extensions.screenshots.upload-disabled" = true;
|
||||||
|
"experiments.supported" = false;
|
||||||
|
"experiments.enabled" = false;
|
||||||
|
"experiments.manifest.uri" = "";
|
||||||
|
"network.allow-experiments" = false;
|
||||||
|
|
||||||
|
## Privacy
|
||||||
|
"dom.private-attribution.submission.enabled" = false;
|
||||||
|
# "privacy.resistFingerprinting" = true;
|
||||||
|
"privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts" = false;
|
||||||
|
"privacy.trackingprotection.enabled" = true;
|
||||||
|
"privacy.trackingprotection.pbmode.enabled" = true;
|
||||||
|
"privacy.userContext.enabled" = true;
|
||||||
|
|
||||||
|
## Geo
|
||||||
|
"geo.enabled" = false;
|
||||||
|
"geo.provider.use_gpsd" = false;
|
||||||
|
"geo.wifi.uri" = "";
|
||||||
|
"browser.search.geoip.url" = "";
|
||||||
|
"browser.search.geoSpecificDefaults" = false;
|
||||||
|
"browser.search.geoSpecificDefaults.url" = "";
|
||||||
|
|
||||||
|
## Window meddling / popups
|
||||||
|
"dom.disable_window_open_feature.close" = true;
|
||||||
|
"dom.disable_window_open_feature.location" = true;
|
||||||
|
"dom.disable_window_open_feature.menubar" = true;
|
||||||
|
"dom.disable_window_open_feature.minimizable" = true;
|
||||||
|
"dom.disable_window_open_feature.personalbar" = true;
|
||||||
|
"dom.disable_window_open_feature.resizable" = true;
|
||||||
|
"dom.disable_window_open_feature.status" = true;
|
||||||
|
"dom.disable_window_open_feature.titlebar" = true;
|
||||||
|
"dom.disable_window_open_feature.toolbar" = true;
|
||||||
|
"dom.disable_window_move_resize" = true;
|
||||||
|
"browser.link.open_newwindow" = 3;
|
||||||
|
"browser.link.open_newwindow.restriction" = 0;
|
||||||
|
"dom.disable_open_during_load" = true;
|
||||||
|
"dom.popup_allowed_events" = "click dblclick";
|
||||||
|
|
||||||
|
## Workers
|
||||||
|
# "dom.serviceWorkers.enabled" = false;
|
||||||
|
"dom.push.enabled" = false;
|
||||||
|
"dom.webnotifications.enabled" = false;
|
||||||
|
"dom.webnotifications.serviceworker.enabled" = false;
|
||||||
|
"permissions.default.desktop-notification" = 2;
|
||||||
|
|
||||||
|
## DOM / JavaScript
|
||||||
|
# "dom.event.clipboardevents.enabled" = false;
|
||||||
|
"middlemouse.paste" = false;
|
||||||
|
# "dom.allow_cut_copy" = false;
|
||||||
|
"dom.disable_beforeunload" = true;
|
||||||
|
"dom.vibrator.enabled" = false;
|
||||||
|
# "javascript.options.asmjs" = false;
|
||||||
|
# "javascript.options.wasm" = false;
|
||||||
|
"dom.targetBlankNoOpener.enabled" = true;
|
||||||
|
|
||||||
|
## Hardware fingerprinting
|
||||||
|
"dom.battery.enabled" = false;
|
||||||
|
"dom.vr.enabled" = false;
|
||||||
|
"media.navigator.enabled" = false;
|
||||||
|
# "dom.webaudio.enabled" = false;
|
||||||
|
|
||||||
|
## Isolation
|
||||||
|
"privacy.firstparty.isolate" = true;
|
||||||
|
"privacy.firstparty.isolate.restrict_opener_access" = true;
|
||||||
|
|
||||||
|
## Telemetry
|
||||||
|
"beacon.enabled" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
|
||||||
|
"browser.newtabpage.activity-stream.telemetry" = false;
|
||||||
|
"browser.send_pings" = false;
|
||||||
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||||
|
"datareporting.healthReport.uploadEnabled" = false;
|
||||||
|
"toolkit.coverage.opt-out" = true;
|
||||||
|
"toolkit.coverage.endpoint.base" = "";
|
||||||
|
"toolkit.telemetry.archive.enabled" = false;
|
||||||
|
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.coverage.opt-out" = true;
|
||||||
|
"toolkit.telemetry.enabled" = false;
|
||||||
|
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.hybridContent.enabled" = false;
|
||||||
|
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||||
|
"toolkit.telemetry.reportingPolicy.firstRun" = false;
|
||||||
|
"toolkit.telemetry.server" = "data:,";
|
||||||
|
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||||
|
"toolkit.telemetry.unified" = false;
|
||||||
|
"toolkit.telemetry.updatePing.enabled" = false;
|
||||||
|
|
||||||
|
## Pocket/Hello
|
||||||
|
"loop.enabled" = false;
|
||||||
|
"loop.feedback.baseUrl" = "";
|
||||||
|
"loop.gettingStarted.url" = "";
|
||||||
|
"loop.learnMoreUrl" = "";
|
||||||
|
"loop.legal.ToS_url" = "";
|
||||||
|
"loop.legal.privacy_url" = "";
|
||||||
|
"loop.oauth.google.redirect_uri" = "";
|
||||||
|
"loop.oauth.google.scope" = "";
|
||||||
|
"loop.server" = "";
|
||||||
|
"loop.soft_start_hostname" = "";
|
||||||
|
"loop.support_url" = "";
|
||||||
|
"loop.throttled2" = false;
|
||||||
|
"loop.logDomains" = false;
|
||||||
|
"browser.pocket.enabled" = false;
|
||||||
|
"browser.pocket.api" = "";
|
||||||
|
"browser.pocket.site" = "";
|
||||||
|
"browser.pocket.oAuthConsumerKey" = "";
|
||||||
|
"browser.pocket.useLocaleList" = false;
|
||||||
|
"brwoser.pocket.enabledLocales" = "";
|
||||||
|
|
||||||
|
## Plugins
|
||||||
|
"plugin.state.flash" = 0;
|
||||||
|
"plugin.state.java" = 0;
|
||||||
|
|
||||||
|
## Misc
|
||||||
|
"browser.selfsupport.url" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
242
users/jordan/graphical/gnome.nix
Normal file
242
users/jordan/graphical/gnome.nix
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkForce
|
||||||
|
;
|
||||||
|
inherit (lib.generators)
|
||||||
|
toINI
|
||||||
|
;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
dconf.settings = {
|
||||||
|
"io/github/celluloid-player/celluloid" = {
|
||||||
|
draggable-video-area-enable = true;
|
||||||
|
};
|
||||||
|
"org/gnome/Console" = {
|
||||||
|
font-scale = 1.4;
|
||||||
|
use-system-font = false;
|
||||||
|
custom-font = "ComicShannsMono Nerd Font 10";
|
||||||
|
};
|
||||||
|
"org/gnome/desktop/interface" = {
|
||||||
|
color-scheme = "prefer-dark";
|
||||||
|
cursor-theme = "Adwaita";
|
||||||
|
enable-hot-corners = false;
|
||||||
|
font-name = "Adwaita Sans 11";
|
||||||
|
gtk-theme = "adw-gtk3-dark";
|
||||||
|
icon-theme = "MoreWaita";
|
||||||
|
monospace-font-name = "Adwaita Mono 11";
|
||||||
|
toolbar-style = "both-horiz";
|
||||||
|
};
|
||||||
|
"org/gnome/desktop/peripherals/touchpad" = {
|
||||||
|
tap-to-click = true;
|
||||||
|
};
|
||||||
|
"org/gnome/desktop/sound" = {
|
||||||
|
theme-name = "freedesktop";
|
||||||
|
};
|
||||||
|
"org/gnome/desktop/search-providers" = {
|
||||||
|
disabled = [ "org.gnome.Epiphany.desktop" ];
|
||||||
|
};
|
||||||
|
"org/gnome/desktop/wm/keybindings" = {
|
||||||
|
switch-group = [ "<Super>grave" ];
|
||||||
|
switch-group-backward = [ "<Shift><Super>grave" ];
|
||||||
|
};
|
||||||
|
"org/gnome/desktop/wm/preferences" = {
|
||||||
|
button-layout = "appmenu:close";
|
||||||
|
};
|
||||||
|
"org/gnome/gnome-session" = {
|
||||||
|
auto-save-session = true;
|
||||||
|
};
|
||||||
|
"org/gnome/gnome-system-monitor" = {
|
||||||
|
show-dependencies = true;
|
||||||
|
};
|
||||||
|
"org/gnome/mutter" = {
|
||||||
|
center-new-windows = true;
|
||||||
|
edge-tiling = true;
|
||||||
|
experimental-features = [ "scale-monitor-framebuffer" ];
|
||||||
|
};
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys" = {
|
||||||
|
volume-up = [
|
||||||
|
"<Shift>F12"
|
||||||
|
"XF86AudioRaiseVolume"
|
||||||
|
];
|
||||||
|
volume-down = [
|
||||||
|
"<Shift>F11"
|
||||||
|
"XF86AudioLowerVolume"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"org/gnome/shell" = {
|
||||||
|
disable-user-extensions = false;
|
||||||
|
enabled-extensions = [
|
||||||
|
"appindicatorsupport@rgcjonas.gmail.com"
|
||||||
|
# "arcmenu@arcmenu.com"
|
||||||
|
"blur-my-shell@aunetx"
|
||||||
|
"burn-my-windows@schneegans.github.com"
|
||||||
|
"clipboard-indicator@tudmotu.com"
|
||||||
|
"CoverflowAltTab@palatis.blogspot.com"
|
||||||
|
# "dash-to-panel@jderose9.github.com"
|
||||||
|
# "desktop-cube@schneegans.github.com"
|
||||||
|
# "EasyScreenCast@iacopodeenosee.gmail.com"
|
||||||
|
"espresso@coadmunkee.github.com"
|
||||||
|
"flypie@schneegans.github.com"
|
||||||
|
# "forge@jmmaranan.com"
|
||||||
|
"gsconnect@andyholmes.github.io"
|
||||||
|
# "gSnap@micahosborne"
|
||||||
|
"hidetopbar@mathieu.bidon.ca"
|
||||||
|
"just-perfection-desktop@just-perfection"
|
||||||
|
# "mediacontrols@cliffniff.github.com"
|
||||||
|
# "mousefollowsfocus@matthes.biz"
|
||||||
|
# "pano@elhan.io"
|
||||||
|
# "paperwm@hedning:matrix.org"
|
||||||
|
"pip-on-top@rafostar.github.com"
|
||||||
|
# "search-light@icedman.github.com"
|
||||||
|
# "smart-auto-move@khimaros.com"
|
||||||
|
"space-bar@luchrioh"
|
||||||
|
# "tiling-assistant@leleat-on-github"
|
||||||
|
"tilingshell@ferrarodomenico.com"
|
||||||
|
"Vitals@CoreCoding.com"
|
||||||
|
"windowIsReady_Remover@nunofarruca@gmail.com"
|
||||||
|
# "worksets@blipk.xyz"
|
||||||
|
# "wsmatrix@martin.zurowietz.de"
|
||||||
|
];
|
||||||
|
favorite-apps = [
|
||||||
|
"firefox.desktop"
|
||||||
|
"org.gnome.Nautilus.desktop"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/blur-my-shell/panel" = {
|
||||||
|
static-blur = true;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/blur-my-shell/applications" = {
|
||||||
|
blur = false;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/burn-my-windows" = {
|
||||||
|
fire-close-effect = false;
|
||||||
|
glide-open-effect = true;
|
||||||
|
glide-close-effect = true;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/dash-to-panel" = {
|
||||||
|
intellihide = true;
|
||||||
|
panel-positions = ''
|
||||||
|
{"0":"TOP"}
|
||||||
|
'';
|
||||||
|
trans-panel-opacity = 0.3;
|
||||||
|
trans-use-custom-opacity = true;
|
||||||
|
trans-use-dynamic-opacity = true;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/espresso" = {
|
||||||
|
enable-fullscreen = true;
|
||||||
|
show-indicator = true;
|
||||||
|
show-notifications = false;
|
||||||
|
inhibit-apps = [
|
||||||
|
"com.obsproject.Studio.desktop"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/flypie" = {
|
||||||
|
preview-on-right-side = true;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/forge" = {
|
||||||
|
window-gap-size = 8;
|
||||||
|
window-gap-hidden-on-single = false;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/hidetopbar" = {
|
||||||
|
mouse-sensitive = true;
|
||||||
|
mouse-sensitive-fullscreen-window = true;
|
||||||
|
enable-active-window = false;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/just-perfection" = {
|
||||||
|
activities-button = false;
|
||||||
|
window-demands-attention-focus = true;
|
||||||
|
workspace-wrap-around = true;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/paperwm" = {
|
||||||
|
use-default-background = true;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/pip-on-top" = {
|
||||||
|
stick = true;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/search-light" = {
|
||||||
|
popup-at-cursor-monitor = true;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/space-bar/behavior" = {
|
||||||
|
enable-activate-workspace-shortcuts = true;
|
||||||
|
show-empty-workspaces = true;
|
||||||
|
smart-workspace-names = false;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/tiling-assistant" = {
|
||||||
|
screen-top-gap = 8;
|
||||||
|
screen-right-gap = 8;
|
||||||
|
screen-bottom-gap = 8;
|
||||||
|
screen-left-gap = 8;
|
||||||
|
window-gap = 8;
|
||||||
|
};
|
||||||
|
"org/gnome/shell/extensions/tilingshell" = {
|
||||||
|
inner-gaps = 16;
|
||||||
|
outer-gaps = 8;
|
||||||
|
enable-blur-snap-assistant = true;
|
||||||
|
};
|
||||||
|
"org/gtk/settings/file-chooser" = {
|
||||||
|
show-hidden = true;
|
||||||
|
sort-directories-first = true;
|
||||||
|
};
|
||||||
|
"org/gtk/gtk4/settings/file-chooser" = {
|
||||||
|
show-hidden = true;
|
||||||
|
sort-directories-first = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
QT_STYLE_OVERRIDE = mkForce "kvantum";
|
||||||
|
QT_WAYLAND_DECORATION = mkForce "adwaita";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.configFile = {
|
||||||
|
"Kvantum/kvantum.kvconfig".text = toINI { } {
|
||||||
|
General.theme = "KvLibadwaitaDark";
|
||||||
|
};
|
||||||
|
"Kvantum/KvLibadwaita".source = "${inputs.kvlibadwaita}/src/KvLibadwaita";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
authenticator
|
||||||
|
# bottles
|
||||||
|
# bustle
|
||||||
|
celluloid
|
||||||
|
# d-spy
|
||||||
|
# drawing
|
||||||
|
# fragments
|
||||||
|
dconf-editor
|
||||||
|
ghex
|
||||||
|
ghostty
|
||||||
|
# gnome-builder
|
||||||
|
gnome-decoder
|
||||||
|
gnome-firmware
|
||||||
|
gnome-frog
|
||||||
|
# gnome-obfuscate
|
||||||
|
gnome-podcasts
|
||||||
|
identity
|
||||||
|
# mission-center
|
||||||
|
mousam
|
||||||
|
newsflash
|
||||||
|
# schemes
|
||||||
|
shortwave
|
||||||
|
sysprof
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
if config.virtualisation.podman.enable then
|
||||||
|
[
|
||||||
|
pods
|
||||||
|
]
|
||||||
|
else
|
||||||
|
[ ]
|
||||||
|
);
|
||||||
|
|
||||||
|
services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||||
|
}
|
32
users/jordan/graphical/hyprland.nix
Normal file
32
users/jordan/graphical/hyprland.nix
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
# withUWSM = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# programs.uwsm.enable = true;
|
||||||
|
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
home.packages = with pkgs.unstable; [
|
||||||
|
anyrun
|
||||||
|
clipse
|
||||||
|
dunst
|
||||||
|
hyprpaper
|
||||||
|
kitty
|
||||||
|
mpv
|
||||||
|
waybar
|
||||||
|
wl-clipboard
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
adw-gtk3
|
||||||
|
];
|
||||||
|
|
||||||
|
services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||||
|
}
|
27
users/jordan/graphical/thunderbird.nix
Normal file
27
users/jordan/graphical/thunderbird.nix
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.file.".thunderbird/Default/chrome/thunderbird-gnome-theme".source =
|
||||||
|
inputs.thunderbird-gnome-theme;
|
||||||
|
|
||||||
|
programs.thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
profiles.Default = {
|
||||||
|
isDefault = true;
|
||||||
|
userChrome = ''
|
||||||
|
@import "thunderbird-gnome-theme/userChrome.css";
|
||||||
|
'';
|
||||||
|
userContent = ''
|
||||||
|
@import "thunderbird-gnome-theme/userContent.css";
|
||||||
|
'';
|
||||||
|
settings = {
|
||||||
|
## GNOME theme
|
||||||
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||||
|
"svg.context-properties.content.enabled" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
132
users/jordan/neovim.nix
Normal file
132
users/jordan/neovim.nix
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.nixvim.config = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
|
||||||
|
options = {
|
||||||
|
number = true;
|
||||||
|
tabstop = 2;
|
||||||
|
shiftwidth = 2;
|
||||||
|
expandtab = true;
|
||||||
|
foldlevel = 99;
|
||||||
|
splitbelow = true;
|
||||||
|
splitright = true;
|
||||||
|
undofile = true;
|
||||||
|
updatetime = 100;
|
||||||
|
list = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
globals = {
|
||||||
|
mapleader = ",";
|
||||||
|
maplocalleader = ",";
|
||||||
|
};
|
||||||
|
|
||||||
|
clipboard = {
|
||||||
|
register = "unnamedplus";
|
||||||
|
|
||||||
|
providers.wl-copy.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.comment.enable = true;
|
||||||
|
|
||||||
|
plugins.hmts.enable = true;
|
||||||
|
|
||||||
|
plugins.lightline.enable = true;
|
||||||
|
|
||||||
|
plugins.luasnip.enable = true;
|
||||||
|
|
||||||
|
plugins.lsp = {
|
||||||
|
enable = true;
|
||||||
|
servers = {
|
||||||
|
bashls.enable = true;
|
||||||
|
ccls.enable = true;
|
||||||
|
cssls.enable = true;
|
||||||
|
eslint.enable = true;
|
||||||
|
gopls.enable = true;
|
||||||
|
html.enable = true;
|
||||||
|
lua_ls.enable = true;
|
||||||
|
pylsp.enable = true;
|
||||||
|
nixd.enable = true;
|
||||||
|
rust_analyzer = {
|
||||||
|
enable = true;
|
||||||
|
installCargo = true;
|
||||||
|
installRustc = true;
|
||||||
|
};
|
||||||
|
ts_ls.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.nvim-autopairs.enable = true;
|
||||||
|
|
||||||
|
plugins.cmp = {
|
||||||
|
enable = true;
|
||||||
|
autoEnableSources = true;
|
||||||
|
settings = {
|
||||||
|
sources = [
|
||||||
|
{ name = "nvim_lsp"; }
|
||||||
|
{ name = "path"; }
|
||||||
|
{ name = "buffer"; }
|
||||||
|
];
|
||||||
|
mapping = {
|
||||||
|
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
||||||
|
"<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
|
||||||
|
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.telescope = {
|
||||||
|
enable = true;
|
||||||
|
keymaps = {
|
||||||
|
"<leader>ff" = "find_files";
|
||||||
|
"<leader>fg" = "live_grep";
|
||||||
|
"<leader>b" = "buffers";
|
||||||
|
"<leader>fh" = "help_tags";
|
||||||
|
"<C-p>" = "git_files";
|
||||||
|
"<C-f>" = "live_grep";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.treesitter = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
nixvimInjections = true;
|
||||||
|
|
||||||
|
folding = true;
|
||||||
|
settings.indent.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.treesitter-refactor = {
|
||||||
|
enable = true;
|
||||||
|
highlightDefinitions = {
|
||||||
|
enable = true;
|
||||||
|
clearOnCursorMove = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.undotree.enable = true;
|
||||||
|
|
||||||
|
plugins.web-devicons.enable = true;
|
||||||
|
|
||||||
|
# plugins.gitsigns.enable = true;
|
||||||
|
# plugins.gitgutter.enable = true;
|
||||||
|
# plugins.goyo.enable = true;
|
||||||
|
# plugins.fugitive.enable = true;
|
||||||
|
# plugins.fzf-lua.enable = true;
|
||||||
|
# plugins.neo-tree.enable = true;
|
||||||
|
# plugins.none-ls.enable = true;
|
||||||
|
# plugins.nvim-tree.enable = true;
|
||||||
|
# plugins.oil.enable = true;
|
||||||
|
# plugins.project-nvim.enable = true;
|
||||||
|
# plugins.surround.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables.EDITOR = "nvim";
|
||||||
|
}
|
11
users/jordan/pass.nix
Normal file
11
users/jordan/pass.nix
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.password-store = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.pass.withExtensions (exts: [ exts.pass-otp ]);
|
||||||
|
};
|
||||||
|
}
|
176
users/jordan/shell.nix
Normal file
176
users/jordan/shell.nix
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
autocd = true;
|
||||||
|
autosuggestion = {
|
||||||
|
enable = true;
|
||||||
|
strategy = [ "completion" ];
|
||||||
|
};
|
||||||
|
defaultKeymap = "viins";
|
||||||
|
dotDir = ".config/zsh";
|
||||||
|
enableCompletion = true;
|
||||||
|
enableVteIntegration = true;
|
||||||
|
|
||||||
|
history = {
|
||||||
|
append = true;
|
||||||
|
extended = true;
|
||||||
|
ignoreAllDups = true;
|
||||||
|
ignoreDups = true;
|
||||||
|
ignoreSpace = true;
|
||||||
|
save = 1000000;
|
||||||
|
size = 1000000;
|
||||||
|
};
|
||||||
|
|
||||||
|
initExtra = ''
|
||||||
|
## Colors
|
||||||
|
autoload -U colors && colors
|
||||||
|
|
||||||
|
## Directories
|
||||||
|
setopt AUTO_PUSHD
|
||||||
|
setopt CDABLE_VARS
|
||||||
|
setopt PUSHD_IGNORE_DUPS
|
||||||
|
setopt PUSHD_SILENT
|
||||||
|
setopt PUSHD_TO_HOME
|
||||||
|
|
||||||
|
## Expansion and globbing
|
||||||
|
setopt EXTENDED_GLOB
|
||||||
|
unsetopt GLOB_DOTS
|
||||||
|
unsetopt NOMATCH
|
||||||
|
|
||||||
|
## History
|
||||||
|
setopt BANG_HIST
|
||||||
|
setopt HIST_VERIFY
|
||||||
|
setopt INC_APPEND_HISTORY_TIME
|
||||||
|
|
||||||
|
## I/O
|
||||||
|
setopt INTERACTIVE_COMMENTS
|
||||||
|
setopt MULTIOS
|
||||||
|
unsetopt CLOBBER
|
||||||
|
|
||||||
|
## Jobs
|
||||||
|
setopt LONG_LIST_JOBS
|
||||||
|
setopt AUTO_RESUME
|
||||||
|
unsetopt BG_NICE
|
||||||
|
unsetopt NOTIFY
|
||||||
|
unsetopt HUP
|
||||||
|
unsetopt CHECK_JOBS
|
||||||
|
|
||||||
|
## Shell emulation
|
||||||
|
setopt APPEND_CREATE
|
||||||
|
|
||||||
|
## Prompt
|
||||||
|
PS1="%B%{$fg[magenta]%}%~%{$reset_color%} $%b "
|
||||||
|
|
||||||
|
## Vi mode
|
||||||
|
export KEYTIMEOUT=1
|
||||||
|
|
||||||
|
## Zsh line editor
|
||||||
|
unsetopt BEEP
|
||||||
|
'';
|
||||||
|
|
||||||
|
initExtraBeforeCompInit = ''
|
||||||
|
setopt HASH_LIST_ALL
|
||||||
|
'';
|
||||||
|
|
||||||
|
localVariables = {
|
||||||
|
# Prevent zsh-vi-mode overriding other keybinds
|
||||||
|
ZVM_INIT_MODE = "sourcing";
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = with pkgs; [
|
||||||
|
{
|
||||||
|
name = "zsh-vi-mode";
|
||||||
|
src = zsh-vi-mode;
|
||||||
|
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fast-syntax-highlighting";
|
||||||
|
src = zsh-fast-syntax-highlighting;
|
||||||
|
file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "jq-zsh-plugin";
|
||||||
|
src = jq-zsh-plugin;
|
||||||
|
file = "share/jq-zsh-plugin/jq.plugin.zsh";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "zsh-autopair";
|
||||||
|
src = zsh-autopair;
|
||||||
|
file = "share/zsh/zsh-autopair/autopair.zsh";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "zsh-forgit";
|
||||||
|
src = zsh-forgit;
|
||||||
|
file = "share/zsh/zsh-forgit/forgit.plugin.zsh";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "zsh-fzf-tab";
|
||||||
|
src = zsh-fzf-tab;
|
||||||
|
file = "share/fzf-tab/fzf-tab.plugin.zsh";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
sessionVariables = {
|
||||||
|
MODE_INDICATOR = "";
|
||||||
|
MODE_CURSOR_VIINS = "#b77ee0 blinking bar";
|
||||||
|
MODE_CURSOR_REPLACE = "$MODE_CURSOR_VIINS #ff3334";
|
||||||
|
MODE_CURSOR_VICMD = "#b77ee0 block";
|
||||||
|
MODE_CURSOR_SEARCH = "#e7c547 steady underline";
|
||||||
|
MODE_CURSOR_VISUAL = "$MODE_CURSOR_VICMD steady bar";
|
||||||
|
MODE_CURSOR_VLINE = "$MODE_CURSOR_VISUAL #54ced6";
|
||||||
|
ZVM_LINE_INIT_MODE = "i";
|
||||||
|
};
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
# Verbose file operations
|
||||||
|
cp = "cp -iv";
|
||||||
|
mv = "mv -iv";
|
||||||
|
rm = "rm -v";
|
||||||
|
mkdir = "mkdir -v";
|
||||||
|
|
||||||
|
# Colorize commands
|
||||||
|
ls = "ls -h --color=auto --group-directories-first";
|
||||||
|
|
||||||
|
# Abbreviations
|
||||||
|
e = "$EDITOR";
|
||||||
|
f = "$FILE";
|
||||||
|
g = "git";
|
||||||
|
m = "neomutt";
|
||||||
|
n = "$FILE";
|
||||||
|
v = "$EDITOR";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
broot.enable = true;
|
||||||
|
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
package = pkgs.unstable.fzf;
|
||||||
|
};
|
||||||
|
|
||||||
|
mcfly.enable = true;
|
||||||
|
navi.enable = true;
|
||||||
|
nix-index.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
bat
|
||||||
|
btop
|
||||||
|
fd
|
||||||
|
jq
|
||||||
|
nix-zsh-completions
|
||||||
|
nnn
|
||||||
|
ripgrep
|
||||||
|
];
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user