mirror of
https://github.com/callumio/nixfiles.git
synced 2025-12-17 03:29:20 +00:00
legacy artemis config - needs refactor
This commit is contained in:
parent
aba3aceed8
commit
961d41b9bf
34 changed files with 1572 additions and 12 deletions
281
flake.lock
generated
281
flake.lock
generated
|
|
@ -23,6 +23,120 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16": {
|
||||
"inputs": {
|
||||
"fromYaml": "fromYaml"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1708890466,
|
||||
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"rev": "665b3c6748534eb766c777298721cece9453fdae",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-fish": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1622559957,
|
||||
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-foot": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696725948,
|
||||
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-foot",
|
||||
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-foot",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-helix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1720809814,
|
||||
"narHash": "sha256-numb3xigRGnr/deF7wdjBwVg7fpbTH7reFDkJ75AJkY=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"rev": "34f41987bec14c0f3f6b2155c19787b1f6489625",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-kitty": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1665001328,
|
||||
"narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=",
|
||||
"owner": "kdrag0n",
|
||||
"repo": "base16-kitty",
|
||||
"rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "kdrag0n",
|
||||
"repo": "base16-kitty",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-tmux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696725902,
|
||||
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-tmux",
|
||||
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-tmux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-vim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1716150083,
|
||||
"narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-vim",
|
||||
"rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-vim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"devour-flake": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
|
@ -81,6 +195,29 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"firefox-addons": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"dir": "pkgs/firefox-addons",
|
||||
"lastModified": 1725014336,
|
||||
"narHash": "sha256-4sLMoyIIRR2eRNCcQN1N7UEtuETpa0KrnJOe3vKJm3I=",
|
||||
"owner": "rycee",
|
||||
"repo": "nur-expressions",
|
||||
"rev": "c4261180db65409bd3a71bd300c97313d5d37051",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"dir": "pkgs/firefox-addons",
|
||||
"owner": "rycee",
|
||||
"repo": "nur-expressions",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
|
@ -127,6 +264,22 @@
|
|||
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
||||
}
|
||||
},
|
||||
"flake-compat_4": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
|
|
@ -190,6 +343,21 @@
|
|||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1629284811,
|
||||
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
|
|
@ -207,9 +375,30 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"flake-utils_3": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
"systems": [
|
||||
"stylix",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694529238,
|
||||
|
|
@ -225,6 +414,22 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1689549921,
|
||||
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
|
|
@ -333,6 +538,23 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gnome-shell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1713702291,
|
||||
"narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=",
|
||||
"owner": "GNOME",
|
||||
"repo": "gnome-shell",
|
||||
"rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "GNOME",
|
||||
"ref": "46.1",
|
||||
"repo": "gnome-shell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hercules-ci-effects": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_3",
|
||||
|
|
@ -617,7 +839,7 @@
|
|||
},
|
||||
"nuschtosSearch": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixvim",
|
||||
|
|
@ -643,15 +865,51 @@
|
|||
"agenix": "agenix",
|
||||
"devour-flake": "devour-flake",
|
||||
"disko": "disko",
|
||||
"firefox-addons": "firefox-addons",
|
||||
"home-manager": "home-manager_2",
|
||||
"nixinate": "nixinate",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixvim": "nixvim",
|
||||
"nur": "nur",
|
||||
"stylix": "stylix",
|
||||
"unstable": "unstable",
|
||||
"utils": "utils"
|
||||
}
|
||||
},
|
||||
"stylix": {
|
||||
"inputs": {
|
||||
"base16": "base16",
|
||||
"base16-fish": "base16-fish",
|
||||
"base16-foot": "base16-foot",
|
||||
"base16-helix": "base16-helix",
|
||||
"base16-kitty": "base16-kitty",
|
||||
"base16-tmux": "base16-tmux",
|
||||
"base16-vim": "base16-vim",
|
||||
"flake-compat": "flake-compat_4",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"unstable"
|
||||
],
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1724702977,
|
||||
"narHash": "sha256-bP1/BHbEigLjTTmqyy1t8w5EVWHuLuABtOd/BBXVLtA=",
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"rev": "6c895c6b42ca205017abe72a7263baf36a197972",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
|
|
@ -697,6 +955,21 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
|
@ -737,7 +1010,7 @@
|
|||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2"
|
||||
"flake-utils": "flake-utils_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1722363685,
|
||||
|
|
|
|||
12
flake.nix
12
flake.nix
|
|
@ -35,6 +35,11 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
stylix = {
|
||||
url = "github:danth/stylix";
|
||||
inputs.nixpkgs.follows = "unstable";
|
||||
inputs.home-manager.follows = "home-manager";
|
||||
};
|
||||
#omnix-flake.url = "github:juspay/omnix?dir=nix/om";
|
||||
|
||||
disko = {
|
||||
|
|
@ -42,6 +47,11 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
firefox-addons = {
|
||||
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nur.url = "github:nix-community/NUR";
|
||||
};
|
||||
|
||||
|
|
@ -91,7 +101,7 @@
|
|||
nur.overlay
|
||||
];
|
||||
|
||||
hostDefaults.modules = [home-manager.nixosModules.home-manager inputs.agenix.nixosModules.default] ++ mods.sharedModules;
|
||||
hostDefaults.modules = [home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix inputs.agenix.nixosModules.default] ++ mods.sharedModules;
|
||||
|
||||
hostDefaults.extraArgs = {
|
||||
inherit inputs;
|
||||
|
|
|
|||
54
home/default.nix
Normal file
54
home/default.nix
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [./programs ./services];
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
home = {
|
||||
username = "c";
|
||||
homeDirectory = "/home/c";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
libsecret
|
||||
bitwarden
|
||||
betterbird
|
||||
wl-clipboard
|
||||
(discord.override {
|
||||
withOpenASAR = true;
|
||||
})
|
||||
brightnessctl
|
||||
playerctl
|
||||
pwvucontrol
|
||||
tldr
|
||||
grc
|
||||
fd
|
||||
rofi-rbw-wayland
|
||||
wtype
|
||||
mullvad-vpn
|
||||
spotify
|
||||
gnumake
|
||||
delta
|
||||
slurp
|
||||
grim
|
||||
clang-tools
|
||||
clang
|
||||
ghq
|
||||
gst
|
||||
udiskie
|
||||
rustup
|
||||
ripgrep
|
||||
zig
|
||||
ghc
|
||||
xh
|
||||
unzip
|
||||
just
|
||||
inputs.nixvim.packages."x86_64-linux".default # nixvim
|
||||
];
|
||||
|
||||
home.stateVersion = "24.05";
|
||||
}
|
||||
13
home/programs/alacritty/default.nix
Normal file
13
home/programs/alacritty/default.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
env = {TERM = "xterm-256color";};
|
||||
};
|
||||
};
|
||||
}
|
||||
24
home/programs/default.nix
Normal file
24
home/programs/default.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./hypr
|
||||
./waybar
|
||||
./git
|
||||
./fish
|
||||
./rofi
|
||||
./rbw
|
||||
./firefox
|
||||
./tmux
|
||||
./alacritty
|
||||
./direnv
|
||||
];
|
||||
|
||||
programs = {
|
||||
gpg.enable = true;
|
||||
wpaperd.enable = true;
|
||||
};
|
||||
}
|
||||
14
home/programs/direnv/default.nix
Normal file
14
home/programs/direnv/default.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
config.global = {
|
||||
hide_env_diff = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
60
home/programs/firefox/default.nix
Normal file
60
home/programs/firefox/default.nix
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
policies = {
|
||||
DisablePocket = true;
|
||||
DisableTelemetry = true;
|
||||
};
|
||||
|
||||
profiles.c = {
|
||||
bookmarks = [
|
||||
{
|
||||
name = "NixOS";
|
||||
toolbar = true;
|
||||
bookmarks = [
|
||||
{
|
||||
name = "Packages";
|
||||
url = "https://search.nixos.org";
|
||||
}
|
||||
{
|
||||
name = "Wiki";
|
||||
url = "https://nixos.wiki";
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "News";
|
||||
toolbar = true;
|
||||
bookmarks = [
|
||||
{
|
||||
name = "Al Jazeera";
|
||||
url = "https://aljazeera.com";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
containers = {};
|
||||
|
||||
settings = {};
|
||||
|
||||
userChrome = "";
|
||||
|
||||
userContent = "";
|
||||
|
||||
extensions = with inputs.firefox-addons.packages."x86_64-linux"; [
|
||||
bitwarden
|
||||
ublock-origin
|
||||
darkreader
|
||||
youtube-shorts-block
|
||||
privacy-badger
|
||||
return-youtube-dislikes
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
58
home/programs/fish/default.nix
Normal file
58
home/programs/fish/default.nix
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
interactiveShellInit = ''
|
||||
set fish_greeting
|
||||
trap __trap_exit_tmux EXIT
|
||||
'';
|
||||
|
||||
shellAliases = {v = "nvim";};
|
||||
|
||||
functions = {
|
||||
__trap_exit_tmux = {
|
||||
body = ''
|
||||
test (tmux list-windows | wc -l) = 1 || exit
|
||||
test (tmux list-panes | wc -l) = 1 || exit
|
||||
tmux switch-client -t main
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
plugins = with pkgs.fishPlugins; [
|
||||
{
|
||||
name = "z";
|
||||
inherit (z) src;
|
||||
}
|
||||
{
|
||||
name = "hydro";
|
||||
inherit (hydro) src;
|
||||
}
|
||||
{
|
||||
name = "sponge";
|
||||
inherit (sponge) src;
|
||||
}
|
||||
{
|
||||
name = "grc";
|
||||
inherit (grc) src;
|
||||
}
|
||||
{
|
||||
name = "done";
|
||||
inherit (done) src;
|
||||
}
|
||||
{
|
||||
name = "fzf-fish";
|
||||
inherit (fzf-fish) src;
|
||||
}
|
||||
{
|
||||
name = "forgit";
|
||||
inherit (forgit) src;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
44
home/programs/git/default.nix
Normal file
44
home/programs/git/default.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
|
||||
userName = "Callum Leslie";
|
||||
userEmail = "git@cleslie.uk";
|
||||
signing.key = "D382C4AFEECEAA90";
|
||||
signing.signByDefault = true;
|
||||
|
||||
ignores = [".direnv/"];
|
||||
|
||||
includes = [
|
||||
{
|
||||
condition = "gitdir:~/repos/projects.cs.nott.ac.uk/";
|
||||
contents = {
|
||||
user = {
|
||||
email = "psycl6@nottingham.ac.uk";
|
||||
signingKey = "5A944DF89B6F65AC";
|
||||
};
|
||||
credential = {helper = "store";};
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
extraConfig = {
|
||||
core = {
|
||||
longpaths = true;
|
||||
autocrlf = false;
|
||||
};
|
||||
|
||||
init = {defaultBranch = "main";};
|
||||
|
||||
push = {autoSetupRemote = true;};
|
||||
ghq = {root = "~/repos";};
|
||||
};
|
||||
|
||||
diff-so-fancy.enable = true;
|
||||
};
|
||||
}
|
||||
167
home/programs/hypr/default.nix
Normal file
167
home/programs/hypr/default.nix
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
xwayland.enable = true;
|
||||
# TODO: move to nix config over text
|
||||
settings = {
|
||||
"monitor" = ",prefered,auto,1";
|
||||
|
||||
general = {
|
||||
gaps_in = 0;
|
||||
gaps_out = 0;
|
||||
border_size = 1;
|
||||
};
|
||||
|
||||
decoration = {
|
||||
drop_shadow = true;
|
||||
shadow_range = 4;
|
||||
shadow_render_power = 3;
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
animation = [
|
||||
"windows, 1, 1, default, popin"
|
||||
"fade, 1, 7, default"
|
||||
"workspaces, 1, 1, default, fade"
|
||||
];
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
pseudotile = true;
|
||||
preserve_split = true;
|
||||
no_gaps_when_only = 1;
|
||||
};
|
||||
|
||||
master = {
|
||||
no_gaps_when_only = 1;
|
||||
};
|
||||
|
||||
gestures.workspace_swipe = false;
|
||||
|
||||
misc = {
|
||||
enable_swallow = true;
|
||||
swallow_regex = "Alacritty";
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
};
|
||||
|
||||
input = {
|
||||
kb_layout = "gb,us";
|
||||
kb_variant = ",workman";
|
||||
kb_model = "";
|
||||
kb_options = "ctrl:nocaps, grp:alt_shift_toggle";
|
||||
kb_rules = "";
|
||||
|
||||
follow_mouse = true;
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = true;
|
||||
scroll_factor = 0.3;
|
||||
};
|
||||
|
||||
sensitivity = 0.5;
|
||||
accel_profile = "flat";
|
||||
scroll_method = "2fg";
|
||||
};
|
||||
|
||||
"$mainMod" = "SUPER";
|
||||
|
||||
bind =
|
||||
[
|
||||
"$mainMod, q, killactive"
|
||||
"$mainMod SHIFT, q, exit"
|
||||
"$mainMod, F, fullscreen"
|
||||
"$mainMod SHIFT, f, togglefloating"
|
||||
"$mainMod, d, exec, rofi -show drun"
|
||||
"$mainMod, w, exec, rofi -show window"
|
||||
"$mainMod, p, exec, rofi-rbw --no-folder"
|
||||
"$mainMod, s, togglesplit"
|
||||
"$mainMod SHIFT, r, exec, hyprctl reload"
|
||||
"$mainMod, return, exec, alacritty -e tmux new -A -s main"
|
||||
"$mainMod SHIFT, return, exec, [float; pin] alacritty -e tmux new -A -s main"
|
||||
|
||||
"$mainMod, b, workspace, name:web"
|
||||
"$mainMod, n, workspace, name:chat"
|
||||
"$mainMod, m, workspace, name:media"
|
||||
"$mainMod, v, workspace, name:mail"
|
||||
|
||||
"$mainMod SHIFT, b, movetoworkspace, name:web"
|
||||
"$mainMod SHIFT, n, movetoworkspace, name:chat"
|
||||
"$mainMod SHIFT, m, movetoworkspace, name:media"
|
||||
"$mainMod SHIFT, v, movetoworkspace, name:mail"
|
||||
|
||||
"$mainMod CTRL, b, moveworkspacetomonitor, name:web current"
|
||||
"$mainMod CTRL, n, moveworkspacetomonitor, name:chat current"
|
||||
"$mainMod CTRL, m, moveworkspacetomonitor, name:media current"
|
||||
"$mainMod CTRL, v, moveworkspacetomonitor, name:mail current"
|
||||
"$mainMod CTRL, b, workspace, name:web"
|
||||
"$mainMod CTRL, n, workspace, name:chat"
|
||||
"$mainMod CTRL, m, workspace, name:media"
|
||||
"$mainMod CTRL, v, workspace, name:mail"
|
||||
|
||||
"$mainMod, h, movefocus, l"
|
||||
"$mainMod, l, movefocus, r"
|
||||
"$mainMod, k, movefocus, u"
|
||||
"$mainMod, j, movefocus, d"
|
||||
"$mainMod SHIFT, h, movewindow, l"
|
||||
"$mainMod SHIFT, l, movewindow, r"
|
||||
"$mainMod SHIFT, k, movewindow, u"
|
||||
"$mainMod SHIFT, j, movewindow, d"
|
||||
''SHIFT, Print, exec, grim -g "$(slurp)" - | wl-copy''
|
||||
", Print, exec, grim - | wl-copy"
|
||||
]
|
||||
++ (builtins.concatLists (builtins.genList (x: let
|
||||
ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10));
|
||||
in [
|
||||
"$mainMod, ${ws}, workspace, ${toString (x + 1)}"
|
||||
"$mainMod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
|
||||
"$mainMod CTRL, ${ws}, moveworkspacetomonitor, ${
|
||||
toString (x + 1)
|
||||
} current"
|
||||
"$mainMod CTRL, ${ws}, workspace, ${toString (x + 1)}"
|
||||
])
|
||||
10));
|
||||
|
||||
workspace = [
|
||||
"name:web, on-created-empty: firefox"
|
||||
"name:chat, on-created-empty: discord"
|
||||
"name:media, on-created-empty: spotify"
|
||||
"name:mail, on-created-empty: betterbird"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
"$mainMod, mouse:272, movewindow"
|
||||
"$mainMod, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
bindle = [
|
||||
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
", XF86AudioMute , exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
", XF86AudioMicMute , exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||
", XF86AudioPlay , exec, playerctl play-pause"
|
||||
", XF86AudioPause , exec, playerctl play-pause"
|
||||
", XF86AudioNext , exec, playerctl next"
|
||||
", XF86AudioPrev , exec, playerctl previous"
|
||||
", XF86MonBrightnessUp, exec, brightnessctl -c backlight set +5%"
|
||||
", XF86MonBrightnessDown, exec, brightnessctl -c backlight set 5%-"
|
||||
];
|
||||
|
||||
exec = [
|
||||
"pkill wpaperd & sleep 0.5 && wpaperd"
|
||||
"pkill waybar & sleep 0.5 && waybar"
|
||||
"pkill mako & sleep 0.5 && mako"
|
||||
];
|
||||
|
||||
exec-once = ["blueman-tray" "mullvad-gui" "udiskie -t"];
|
||||
};
|
||||
};
|
||||
}
|
||||
6
home/programs/nvim/.luarc.json
Normal file
6
home/programs/nvim/.luarc.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"diagnostics.globals": [
|
||||
"vim",
|
||||
"lsp_on_attach"
|
||||
]
|
||||
}
|
||||
314
home/programs/nvim/default.nix
Normal file
314
home/programs/nvim/default.nix
Normal file
|
|
@ -0,0 +1,314 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
programs.neovim = let
|
||||
leaders = ''
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
'';
|
||||
toLua = str: ''
|
||||
lua << EOF
|
||||
${leaders}
|
||||
${str}
|
||||
EOF
|
||||
'';
|
||||
toLuaFile = file: ''
|
||||
lua << EOF
|
||||
${leaders}
|
||||
${builtins.readFile file}
|
||||
EOF
|
||||
'';
|
||||
toLuaFileLSP = file: ''
|
||||
lua << EOF
|
||||
${leaders}
|
||||
${builtins.readFile ./plugin/lsp/lsp-keys.lua}
|
||||
${builtins.readFile file}
|
||||
EOF
|
||||
'';
|
||||
|
||||
fromGit = ref: rev: repo:
|
||||
pkgs.vimUtils.buildVimPlugin {
|
||||
pname = "${lib.strings.sanitizeDerivationName repo}";
|
||||
version = ref;
|
||||
src = builtins.fetchGit {
|
||||
url = "https://github.com/${repo}.git";
|
||||
inherit ref;
|
||||
inherit rev;
|
||||
};
|
||||
};
|
||||
|
||||
# always installs latest version
|
||||
pluginGit = fromGit "HEAD";
|
||||
in {
|
||||
enable = true;
|
||||
|
||||
# package = pkgs.neovim-nightly;
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
# Rust
|
||||
rust-analyzer
|
||||
cargo
|
||||
rustc
|
||||
rustfmt
|
||||
|
||||
# YAML
|
||||
yaml-language-server
|
||||
|
||||
# JSON
|
||||
nodePackages.vscode-json-languageserver
|
||||
|
||||
# Go
|
||||
gopls
|
||||
|
||||
# Typescript
|
||||
nodePackages.typescript
|
||||
nodePackages.typescript-language-server
|
||||
|
||||
# Javascript
|
||||
eslint_d
|
||||
|
||||
# Python
|
||||
nodePackages.pyright
|
||||
black
|
||||
|
||||
# Util
|
||||
ripgrep
|
||||
fzf
|
||||
|
||||
# C-Family
|
||||
clang-tools
|
||||
|
||||
# Shell
|
||||
shellcheck
|
||||
shfmt
|
||||
|
||||
# Lua
|
||||
lua-language-server
|
||||
selene
|
||||
stylua
|
||||
|
||||
# Nix
|
||||
rnix-lsp
|
||||
nixfmt
|
||||
statix
|
||||
|
||||
# LLM
|
||||
ollama
|
||||
|
||||
# Haskell
|
||||
haskellPackages.haskell-debug-adapter
|
||||
haskellPackages.haskell-language-server
|
||||
haskellPackages.fourmolu
|
||||
ghc
|
||||
|
||||
# Docker
|
||||
dockerfile-language-server-nodejs
|
||||
docker-compose-language-service
|
||||
];
|
||||
|
||||
defaultEditor = true;
|
||||
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
vimdiffAlias = true;
|
||||
|
||||
extraLuaConfig = ''
|
||||
${builtins.readFile ./options.lua}
|
||||
'';
|
||||
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = nvim-lspconfig;
|
||||
config = toLuaFileLSP ./plugin/lsp/lsp.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = crates-nvim;
|
||||
config = toLua "require('crates').setup()";
|
||||
}
|
||||
|
||||
{
|
||||
plugin = rustaceanvim;
|
||||
config = toLuaFileLSP ./plugin/lsp/rust.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = haskell-tools-nvim;
|
||||
config = toLuaFileLSP ./plugin/lsp/haskell.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = SchemaStore-nvim;
|
||||
config = toLuaFileLSP ./plugin/lsp/schemastore.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = todo-comments-nvim;
|
||||
config =
|
||||
toLua
|
||||
"require('todo-comments').setup(); vim.api.nvim_set_keymap('n', '<leader>vtd', ':TodoTelescope<CR>', { noremap = true });";
|
||||
}
|
||||
|
||||
{
|
||||
plugin = comment-nvim;
|
||||
config = toLua "require('Comment').setup()";
|
||||
}
|
||||
|
||||
{
|
||||
plugin = onedark-nvim;
|
||||
config = "colorscheme onedark";
|
||||
}
|
||||
|
||||
neodev-nvim
|
||||
|
||||
{
|
||||
plugin = nvim-cmp;
|
||||
config = toLuaFile ./plugin/cmp.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = telescope-nvim;
|
||||
config = toLuaFile ./plugin/telescope.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin =
|
||||
pluginGit "951b163e55ce7639eb320c450bde9283c4fe968b"
|
||||
"laytan/cloak.nvim";
|
||||
config = toLuaFile ./plugin/cloak.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin =
|
||||
pluginGit "41ad952c8269fa7aa3a4b8a5abb44541cb628313"
|
||||
"David-Kunz/gen.nvim";
|
||||
config = toLuaFile ./plugin/gen.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = nvim-dap;
|
||||
config = toLuaFile ./plugin/debugger.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin =
|
||||
pluginGit "fd35a46f4b7c1b244249266bdcb2da3814f01724"
|
||||
"xiyaowong/transparent.nvim";
|
||||
config = toLua "require('transparent').setup{}";
|
||||
}
|
||||
|
||||
nvim-dap-ui
|
||||
telescope-dap-nvim
|
||||
nvim-dap-virtual-text
|
||||
|
||||
telescope-fzf-native-nvim
|
||||
|
||||
cmp_luasnip
|
||||
cmp-nvim-lsp
|
||||
|
||||
luasnip
|
||||
friendly-snippets
|
||||
|
||||
{
|
||||
plugin = hardtime-nvim;
|
||||
config = toLua "require('hardtime').setup()";
|
||||
}
|
||||
|
||||
{
|
||||
plugin = nvim-surround;
|
||||
config = toLua "require('nvim-surround').setup{}";
|
||||
}
|
||||
|
||||
{
|
||||
plugin = harpoon;
|
||||
config = toLuaFile ./plugin/harpoon.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = lualine-nvim;
|
||||
config =
|
||||
toLua
|
||||
"require('lualine').setup{options = {icons_enabled = true, theme = 'onedark', component_separators = '|', section_separators = ''}, sections = { lualine_a = { { 'buffers', } } }}";
|
||||
}
|
||||
|
||||
{
|
||||
plugin = nvim-autopairs;
|
||||
config = toLua "require('nvim-autopairs').setup {}";
|
||||
}
|
||||
|
||||
{
|
||||
plugin = leap-nvim;
|
||||
config = toLua "require('leap.user').add_default_mappings()";
|
||||
}
|
||||
|
||||
{
|
||||
plugin = none-ls-nvim;
|
||||
config = toLuaFile ./plugin/lsp/none-ls.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = oil-nvim;
|
||||
config = toLuaFile ./plugin/oil.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = zen-mode-nvim;
|
||||
config = toLuaFile ./plugin/zen.lua;
|
||||
}
|
||||
twilight-nvim
|
||||
|
||||
nvim-web-devicons
|
||||
|
||||
{
|
||||
plugin = undotree;
|
||||
config =
|
||||
toLua "vim.keymap.set('n', '<leader>u', vim.cmd.UndotreeToggle)";
|
||||
}
|
||||
|
||||
{
|
||||
plugin = gitsigns-nvim;
|
||||
config = toLuaFile ./plugin/gitsigns.lua;
|
||||
}
|
||||
|
||||
{
|
||||
plugin = nvim-treesitter.withPlugins (p: [
|
||||
p.tree-sitter-nix
|
||||
p.tree-sitter-vim
|
||||
p.tree-sitter-bash
|
||||
p.tree-sitter-lua
|
||||
p.tree-sitter-python
|
||||
p.tree-sitter-rust
|
||||
p.tree-sitter-json
|
||||
p.tree-sitter-c
|
||||
p.tree-sitter-comment
|
||||
p.tree-sitter-javascript
|
||||
p.tree-sitter-fish
|
||||
p.tree-sitter-dockerfile
|
||||
p.tree-sitter-cpp
|
||||
p.tree-sitter-git_config
|
||||
p.tree-sitter-git_rebase
|
||||
p.tree-sitter-gitattributes
|
||||
p.tree-sitter-gitcommit
|
||||
p.tree-sitter-gitignore
|
||||
p.tree-sitter-markdown
|
||||
p.tree-sitter-markdown_inline
|
||||
p.tree-sitter-make
|
||||
p.tree-sitter-norg
|
||||
p.tree-sitter-ssh_config
|
||||
p.tree-sitter-typescript
|
||||
p.tree-sitter-tsx
|
||||
p.tree-sitter-haskell
|
||||
p.tree-sitter-yaml
|
||||
p.tree-sitter-zig
|
||||
]);
|
||||
config = toLuaFile ./plugin/treesitter.lua;
|
||||
}
|
||||
|
||||
vim-nix
|
||||
];
|
||||
};
|
||||
}
|
||||
15
home/programs/rbw/default.nix
Normal file
15
home/programs/rbw/default.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.rbw = {
|
||||
enable = true;
|
||||
settings = {
|
||||
base_url = "https://vaultwarden.cleslie.uk";
|
||||
email = "cal@callumleslie.me";
|
||||
pinentry = pkgs.pinentry-gnome3;
|
||||
};
|
||||
};
|
||||
}
|
||||
12
home/programs/rofi/default.nix
Normal file
12
home/programs/rofi/default.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
#theme = "Arc-Dark";
|
||||
};
|
||||
}
|
||||
71
home/programs/tmux/default.nix
Normal file
71
home/programs/tmux/default.nix
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
shortcut = "x";
|
||||
baseIndex = 0;
|
||||
escapeTime = 0;
|
||||
clock24 = true;
|
||||
mouse = true;
|
||||
|
||||
plugins = with pkgs.tmuxPlugins; [
|
||||
sensible
|
||||
yank
|
||||
{
|
||||
plugin = onedark-theme;
|
||||
extraConfig = "\n";
|
||||
}
|
||||
{
|
||||
plugin = resurrect;
|
||||
extraConfig = ''
|
||||
set -g @resurrect-strategy-vim 'session'
|
||||
set -g @resurrect-strategy-nvim 'session'
|
||||
set -g @resurrect-capture-pane-contents 'on'
|
||||
'';
|
||||
}
|
||||
{
|
||||
plugin = continuum;
|
||||
extraConfig = ''
|
||||
set -g @continuum-restore 'on'
|
||||
set -g @continuum-boot 'off'
|
||||
set -g @continuum-save-interval '10'
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
extraConfig = ''
|
||||
set-option -g status-position top
|
||||
set-option -g default-terminal "tmux-256color"
|
||||
set-option -sa terminal-features ',xterm-256color:RGB'
|
||||
set-window-option -g mode-keys vi
|
||||
|
||||
bind / split-window -h -c "#{pane_current_path}"
|
||||
bind \\ split-window -v -c "#{pane_current_path}"
|
||||
bind c new-window -c "#{pane_current_path}"
|
||||
|
||||
bind-key -r s run-shell "tmux display-popup -E 'tmux-sessionizer -s'"
|
||||
bind-key -r f run-shell "tmux display-popup -E 'tmux-sessionizer -p'"
|
||||
bind-key -r m run-shell "tmux switch-client -t main"
|
||||
bind S choose-tree
|
||||
|
||||
bind -r k select-pane -U
|
||||
bind -r j select-pane -D
|
||||
bind -r h select-pane -L
|
||||
bind -r l select-pane -R
|
||||
'';
|
||||
};
|
||||
|
||||
home.packages = [
|
||||
(pkgs.writeShellApplication {
|
||||
name = "tmux-sessionizer";
|
||||
runtimeInputs = [pkgs.tmux pkgs.ghq];
|
||||
text = ''
|
||||
${builtins.readFile ./tmux-sessionizer.sh}
|
||||
'';
|
||||
})
|
||||
];
|
||||
}
|
||||
59
home/programs/tmux/tmux-sessionizer.sh
Executable file
59
home/programs/tmux/tmux-sessionizer.sh
Executable file
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/env bash
|
||||
|
||||
pick_session() {
|
||||
selected=$(ghq list -p | fzf || exit 0)
|
||||
|
||||
if [[ -z $selected ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
selected_name=$(basename "$selected" | tr . _)
|
||||
tmux_running=$(pgrep tmux)
|
||||
|
||||
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
|
||||
tmux new-session -s "$selected_name" -c "$selected"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! tmux has-session -t="$selected_name" 2>/dev/null; then
|
||||
tmux new-session -ds "$selected_name" -c "$selected"
|
||||
fi
|
||||
|
||||
tmux switch-client -t "$selected_name"
|
||||
}
|
||||
|
||||
switch_session() {
|
||||
selected=$(tmux list-sessions -F "#{session_name}" | fzf || exit 0)
|
||||
|
||||
if [[ -z $selected ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
tmux switch-client -t "$selected"
|
||||
}
|
||||
|
||||
selections=()
|
||||
while getopts "sp" opt; do
|
||||
case ${opt} in
|
||||
p) selections+=("pick") ;;
|
||||
s) selections+=("switch") ;;
|
||||
\?)
|
||||
echo "Invalid usage"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
done 2>/dev/null
|
||||
|
||||
case ${#selections[@]} in
|
||||
1) selection=${selections[0]} ;;
|
||||
*)
|
||||
echo "Please make exactly one selection (-p or -s)" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
case $selection in
|
||||
"pick") pick_session ;;
|
||||
"switch") switch_session ;;
|
||||
esac
|
||||
94
home/programs/waybar/default.nix
Normal file
94
home/programs/waybar/default.nix
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
package = pkgs.waybar.override {
|
||||
hyprlandSupport = true;
|
||||
swaySupport = false;
|
||||
};
|
||||
systemd.enable = false;
|
||||
settings = {
|
||||
mainBar = {
|
||||
layer = "top";
|
||||
position = "bottom";
|
||||
height = 20;
|
||||
modules-left = ["hyprland/workspaces" "hyprland/submap"];
|
||||
modules-center = ["hyprland/window"];
|
||||
modules-right = ["temperature" "wireplumber" "backlight" "battery" "clock" "tray"];
|
||||
clock = {
|
||||
tooltip = false;
|
||||
interval = 1;
|
||||
format = "{:%H:%M}";
|
||||
format-alt = "{:%d %B %Y, %A}";
|
||||
};
|
||||
battery = {
|
||||
states = {
|
||||
full = 99;
|
||||
good = 98;
|
||||
normal = 98;
|
||||
warning = 20;
|
||||
critical = 10;
|
||||
};
|
||||
format = "{icon} {capacity}%";
|
||||
format-good = "{icon} {capacity}%";
|
||||
format-full = " {capacity}%";
|
||||
format-icons = ["" "" "" "" ""];
|
||||
tooltip = false;
|
||||
};
|
||||
wireplumber = {
|
||||
on-click = "${pkgs.pwvucontrol}/bin/pwvucontrol";
|
||||
format = "{icon} {volume}%";
|
||||
format-muted = "";
|
||||
format-icons = ["" "" ""];
|
||||
tooltip = false;
|
||||
};
|
||||
backlight = {
|
||||
format = "{icon} {percent}%";
|
||||
format-icons = ["" "" "" ""];
|
||||
tooltip = false;
|
||||
};
|
||||
tray = {
|
||||
icon-size = 18;
|
||||
spacing = 4;
|
||||
show-passive-items = true;
|
||||
tooltip = false;
|
||||
};
|
||||
temperature = {
|
||||
thermal-zone = 0;
|
||||
format = "{icon} {temperatureC}°C";
|
||||
format-icons = [""];
|
||||
interval = 30;
|
||||
tooltip = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
style = ''
|
||||
* {
|
||||
min-height: 0;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
margin: 0px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
margin: 0px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
#workspaces button.focused, #workspaces button.active {
|
||||
border-bottom: 3px solid @base05;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: alpha(@base05, 1);
|
||||
color: @base00;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
16
home/services/default.nix
Normal file
16
home/services/default.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [./mako];
|
||||
services = {
|
||||
network-manager-applet.enable = true;
|
||||
mpris-proxy.enable = true;
|
||||
gpg-agent = {
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
11
home/services/mako/default.nix
Normal file
11
home/services/mako/default.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
services.mako = {
|
||||
enable = true;
|
||||
defaultTimeout = 7000;
|
||||
};
|
||||
}
|
||||
47
hosts/artemis/configuration.nix
Normal file
47
hosts/artemis/configuration.nix
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
inherit (inputs.self.nixosModules) keys;
|
||||
in {
|
||||
services.remote-deploy = {
|
||||
enable = false;
|
||||
keys = keys.c;
|
||||
};
|
||||
|
||||
time.timeZone = "Europe/London";
|
||||
i18n.defaultLocale = "en_GB.UTF-8";
|
||||
|
||||
users.users.c = {
|
||||
isNormalUser = true;
|
||||
extraGroups = ["wheel" "networkmanager" "libvirtd" "dialout"];
|
||||
openssh.authorizedKeys.keys = keys.c;
|
||||
shell = pkgs.fish;
|
||||
packages = with pkgs; [];
|
||||
};
|
||||
|
||||
nix.settings.trusted-users = ["c"];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim
|
||||
wget
|
||||
fzf
|
||||
nil
|
||||
killall
|
||||
gcc
|
||||
pkg-config
|
||||
];
|
||||
|
||||
environment = {
|
||||
variables = {EDITOR = "nvim";};
|
||||
sessionVariables = {NIXOS_OZONE_WL = "1";};
|
||||
|
||||
shells = with pkgs; [fish];
|
||||
|
||||
etc."greetd/environments".text = ''
|
||||
hyprland
|
||||
'';
|
||||
};
|
||||
fonts.packages = with pkgs; [nerdfonts meslo-lgs-nf];
|
||||
}
|
||||
10
hosts/artemis/containers.nix
Normal file
10
hosts/artemis/containers.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
virtualisation = {
|
||||
libvirtd.enable = true;
|
||||
podman = {
|
||||
enable = true;
|
||||
dockerCompat = true;
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,5 +1,14 @@
|
|||
{
|
||||
modules = [./hardware-configuration.nix];
|
||||
modules = [
|
||||
./hardware-configuration.nix
|
||||
./configuration.nix
|
||||
./containers.nix
|
||||
./networking.nix
|
||||
./ssh.nix
|
||||
./programs.nix
|
||||
./home.nix
|
||||
./styling.nix
|
||||
];
|
||||
extraArgs = {};
|
||||
specialArgs = {};
|
||||
system = "x86_64-linux";
|
||||
|
|
|
|||
|
|
@ -12,9 +12,48 @@
|
|||
initrd.kernelModules = [];
|
||||
kernelModules = ["kvm-intel"];
|
||||
extraModulePackages = [];
|
||||
#kernelPackages = pkgs.linuxPackages_latest;
|
||||
};
|
||||
hardware = {
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings = {General = {Enable = "Source,Sink,Media,Socket";};};
|
||||
};
|
||||
|
||||
#boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
opengl = {
|
||||
# hardware.graphics on unstable
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
intel-media-driver # LIBVA_DRIVER_NAME=iHD
|
||||
intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
|
||||
libvdpau-va-gl
|
||||
vaapiVdpau
|
||||
intel-compute-runtime
|
||||
unstable.vpl-gpu-rt
|
||||
];
|
||||
};
|
||||
|
||||
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
};
|
||||
environment.sessionVariables = {LIBVA_DRIVER_NAME = "iHD";}; # Force intel-media-driver
|
||||
|
||||
services = {
|
||||
blueman.enable = true;
|
||||
|
||||
power-profiles-daemon.enable = false;
|
||||
system76-scheduler.settings.cfsProfiles.enable = true;
|
||||
tlp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
CPU_BOOST_ON_AC = 1;
|
||||
CPU_BOOST_ON_BAT = 0;
|
||||
CPU_SCALING_GOVERNOR_ON_AC = "performance";
|
||||
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
||||
};
|
||||
};
|
||||
};
|
||||
powerManagement.powertop.enable = true;
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/5488764f-a50a-4ea2-ac8d-bfe565199018";
|
||||
|
|
@ -24,6 +63,4 @@
|
|||
swapDevices = [];
|
||||
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
|
|
|
|||
13
hosts/artemis/home.nix
Normal file
13
hosts/artemis/home.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{inputs, ...}: {
|
||||
home-manager = {
|
||||
sharedModules = [
|
||||
{
|
||||
stylix.targets = {
|
||||
fish.enable = false;
|
||||
};
|
||||
}
|
||||
];
|
||||
users.c = import ../../home;
|
||||
extraSpecialArgs = {inherit inputs;};
|
||||
};
|
||||
}
|
||||
10
hosts/artemis/networking.nix
Normal file
10
hosts/artemis/networking.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{config, ...}: {
|
||||
networking = {
|
||||
hostName = "artemis";
|
||||
networkmanager.enable = true;
|
||||
firewall.enable = true;
|
||||
firewall.allowPing = true;
|
||||
enableIPv6 = false;
|
||||
nameservers = ["9.9.9.9" "149.112.112.112"];
|
||||
};
|
||||
}
|
||||
45
hosts/artemis/programs.nix
Normal file
45
hosts/artemis/programs.nix
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
{pkgs, ...}: {
|
||||
programs = {
|
||||
fish.enable = true;
|
||||
seahorse.enable = true;
|
||||
nix-ld.enable = true;
|
||||
virt-manager.enable = true;
|
||||
nm-applet.enable = true;
|
||||
hyprland.enable = true;
|
||||
};
|
||||
services = {
|
||||
mullvad-vpn = {
|
||||
enable = true;
|
||||
package = pkgs.mullvad-vpn;
|
||||
};
|
||||
|
||||
dbus.enable = true;
|
||||
printing.enable = true;
|
||||
|
||||
udisks2.enable = true;
|
||||
pipewire = {
|
||||
enable = true;
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
pulse.enable = true;
|
||||
wireplumber.enable = true;
|
||||
#jack.enable = true;
|
||||
};
|
||||
|
||||
thermald.enable = true;
|
||||
greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session.command = ''
|
||||
${pkgs.greetd.tuigreet}/bin/tuigreet \
|
||||
--time \
|
||||
--asterisks \
|
||||
--user-menu \
|
||||
--cmd Hyprland
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
10
hosts/artemis/ssh.nix
Normal file
10
hosts/artemis/ssh.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PasswordAuthentication = true;
|
||||
KbdInteractiveAuthentication = true;
|
||||
PermitRootLogin = "no";
|
||||
};
|
||||
};
|
||||
}
|
||||
57
hosts/artemis/styling.nix
Normal file
57
hosts/artemis/styling.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{pkgs, ...}: {
|
||||
stylix = {
|
||||
enable = true;
|
||||
|
||||
image = pkgs.fetchurl {
|
||||
url = "https://i.redd.it/jd1nuwsl0d121.jpg";
|
||||
sha256 = "sha256-ff3ajGVsay2dtHiHmO2MYlqCvexUQjGifMs/ofzuyvI=";
|
||||
};
|
||||
|
||||
polarity = "dark";
|
||||
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/onedark.yaml";
|
||||
|
||||
cursor = {
|
||||
# package = pkgs.bibata-cursors;
|
||||
# name = "Bibata-Modern-Ice";
|
||||
package = pkgs.apple-cursor;
|
||||
name = "macOS-Monterey";
|
||||
size = 8;
|
||||
};
|
||||
|
||||
fonts = {
|
||||
monospace = {
|
||||
package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];};
|
||||
name = "JetBrainsMono Nerd Font Mono";
|
||||
};
|
||||
|
||||
sansSerif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans";
|
||||
};
|
||||
|
||||
serif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Serif";
|
||||
};
|
||||
|
||||
sizes = {
|
||||
applications = 12;
|
||||
terminal = 12;
|
||||
desktop = 10;
|
||||
popups = 10;
|
||||
};
|
||||
};
|
||||
|
||||
opacity = {
|
||||
applications = 1.0;
|
||||
terminal = 1.0;
|
||||
desktop = 1.0;
|
||||
popups = 1.0;
|
||||
};
|
||||
|
||||
targets = {
|
||||
fish.enable = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{utils}: let
|
||||
hosts = utils.lib.exportModules [
|
||||
# ./artemis
|
||||
./artemis
|
||||
./hermes
|
||||
];
|
||||
in {inherit hosts;}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ in {
|
|||
];
|
||||
};
|
||||
|
||||
nix.settings.trusted-users = ["media"];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
wget
|
||||
tree
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
pkgs,
|
||||
...
|
||||
}: {
|
||||
networking.hostName = "hermes";
|
||||
networking = {
|
||||
hostName = "hermes";
|
||||
enableIPv6 = false;
|
||||
firewall.allowedTCPPorts = [80 443 8265];
|
||||
firewall.checkReversePath = false;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
{
|
||||
nix = {
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 7d";
|
||||
};
|
||||
extraOptions = "gc-keep-outputs = true";
|
||||
settings = {
|
||||
experimental-features = ["nix-command" "flakes"];
|
||||
|
|
|
|||
|
|
@ -6,5 +6,5 @@ let
|
|||
};
|
||||
allSystems = builtins.attrValues systems;
|
||||
in {
|
||||
"wg-conf.age".publicKeys = keys.c ++ [systems.hermes];
|
||||
"wg-conf.age".publicKeys = keys.c ++ allSystems;
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue