From 961d41b9bfd166330f80c9a1fe524ba66698b375 Mon Sep 17 00:00:00 2001 From: Callum Leslie Date: Fri, 30 Aug 2024 17:08:21 +0100 Subject: [PATCH] legacy artemis config - needs refactor --- flake.lock | 281 +++++++++++++++++++- flake.nix | 12 +- home/default.nix | 54 ++++ home/programs/alacritty/default.nix | 13 + home/programs/default.nix | 24 ++ home/programs/direnv/default.nix | 14 + home/programs/firefox/default.nix | 60 +++++ home/programs/fish/default.nix | 58 +++++ home/programs/git/default.nix | 44 ++++ home/programs/hypr/default.nix | 167 ++++++++++++ home/programs/nvim/.luarc.json | 6 + home/programs/nvim/default.nix | 314 +++++++++++++++++++++++ home/programs/rbw/default.nix | 15 ++ home/programs/rofi/default.nix | 12 + home/programs/tmux/default.nix | 71 +++++ home/programs/tmux/tmux-sessionizer.sh | 59 +++++ home/programs/waybar/default.nix | 94 +++++++ home/services/default.nix | 16 ++ home/services/mako/default.nix | 11 + hosts/artemis/configuration.nix | 47 ++++ hosts/artemis/containers.nix | 10 + hosts/artemis/default.nix | 11 +- hosts/artemis/hardware-configuration.nix | 43 +++- hosts/artemis/home.nix | 13 + hosts/artemis/networking.nix | 10 + hosts/artemis/programs.nix | 45 ++++ hosts/artemis/ssh.nix | 10 + hosts/artemis/styling.nix | 57 ++++ hosts/default.nix | 2 +- hosts/hermes/configuration.nix | 2 + hosts/hermes/networking.nix | 2 +- modules/nix.nix | 5 + secrets/secrets.nix | 2 +- secrets/wg-conf.age | Bin 587 -> 697 bytes 34 files changed, 1572 insertions(+), 12 deletions(-) create mode 100644 home/default.nix create mode 100644 home/programs/alacritty/default.nix create mode 100644 home/programs/default.nix create mode 100644 home/programs/direnv/default.nix create mode 100644 home/programs/firefox/default.nix create mode 100644 home/programs/fish/default.nix create mode 100644 home/programs/git/default.nix create mode 100644 home/programs/hypr/default.nix create mode 100644 home/programs/nvim/.luarc.json create mode 100644 home/programs/nvim/default.nix create mode 100644 home/programs/rbw/default.nix create mode 100644 home/programs/rofi/default.nix create mode 100644 home/programs/tmux/default.nix create mode 100755 home/programs/tmux/tmux-sessionizer.sh create mode 100644 home/programs/waybar/default.nix create mode 100644 home/services/default.nix create mode 100644 home/services/mako/default.nix create mode 100644 hosts/artemis/configuration.nix create mode 100644 hosts/artemis/containers.nix create mode 100644 hosts/artemis/home.nix create mode 100644 hosts/artemis/networking.nix create mode 100644 hosts/artemis/programs.nix create mode 100644 hosts/artemis/ssh.nix create mode 100644 hosts/artemis/styling.nix diff --git a/flake.lock b/flake.lock index d5ac243..e4af39b 100644 --- a/flake.lock +++ b/flake.lock @@ -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, diff --git a/flake.nix b/flake.nix index 0c96bc9..2f1ce4b 100644 --- a/flake.nix +++ b/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; diff --git a/home/default.nix b/home/default.nix new file mode 100644 index 0000000..25d780e --- /dev/null +++ b/home/default.nix @@ -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"; +} diff --git a/home/programs/alacritty/default.nix b/home/programs/alacritty/default.nix new file mode 100644 index 0000000..2c511e5 --- /dev/null +++ b/home/programs/alacritty/default.nix @@ -0,0 +1,13 @@ +{ + config, + inputs, + pkgs, + ... +}: { + programs.alacritty = { + enable = true; + settings = { + env = {TERM = "xterm-256color";}; + }; + }; +} diff --git a/home/programs/default.nix b/home/programs/default.nix new file mode 100644 index 0000000..e2cceb3 --- /dev/null +++ b/home/programs/default.nix @@ -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; + }; +} diff --git a/home/programs/direnv/default.nix b/home/programs/direnv/default.nix new file mode 100644 index 0000000..121d096 --- /dev/null +++ b/home/programs/direnv/default.nix @@ -0,0 +1,14 @@ +{ + config, + inputs, + pkgs, + ... +}: { + programs.direnv = { + enable = true; + nix-direnv.enable = true; + config.global = { + hide_env_diff = true; + }; + }; +} diff --git a/home/programs/firefox/default.nix b/home/programs/firefox/default.nix new file mode 100644 index 0000000..660c2e7 --- /dev/null +++ b/home/programs/firefox/default.nix @@ -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 + ]; + }; + }; +} diff --git a/home/programs/fish/default.nix b/home/programs/fish/default.nix new file mode 100644 index 0000000..27d69f4 --- /dev/null +++ b/home/programs/fish/default.nix @@ -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; + } + ]; + }; +} diff --git a/home/programs/git/default.nix b/home/programs/git/default.nix new file mode 100644 index 0000000..544b818 --- /dev/null +++ b/home/programs/git/default.nix @@ -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; + }; +} diff --git a/home/programs/hypr/default.nix b/home/programs/hypr/default.nix new file mode 100644 index 0000000..53d9e0e --- /dev/null +++ b/home/programs/hypr/default.nix @@ -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"]; + }; + }; +} diff --git a/home/programs/nvim/.luarc.json b/home/programs/nvim/.luarc.json new file mode 100644 index 0000000..904146d --- /dev/null +++ b/home/programs/nvim/.luarc.json @@ -0,0 +1,6 @@ +{ + "diagnostics.globals": [ + "vim", + "lsp_on_attach" + ] +} diff --git a/home/programs/nvim/default.nix b/home/programs/nvim/default.nix new file mode 100644 index 0000000..86139ef --- /dev/null +++ b/home/programs/nvim/default.nix @@ -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', 'vtd', ':TodoTelescope', { 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', '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 + ]; + }; +} diff --git a/home/programs/rbw/default.nix b/home/programs/rbw/default.nix new file mode 100644 index 0000000..bd91384 --- /dev/null +++ b/home/programs/rbw/default.nix @@ -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; + }; + }; +} diff --git a/home/programs/rofi/default.nix b/home/programs/rofi/default.nix new file mode 100644 index 0000000..81c3f4e --- /dev/null +++ b/home/programs/rofi/default.nix @@ -0,0 +1,12 @@ +{ + config, + inputs, + pkgs, + ... +}: { + programs.rofi = { + enable = true; + package = pkgs.rofi-wayland; + #theme = "Arc-Dark"; + }; +} diff --git a/home/programs/tmux/default.nix b/home/programs/tmux/default.nix new file mode 100644 index 0000000..c863ad8 --- /dev/null +++ b/home/programs/tmux/default.nix @@ -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} + ''; + }) + ]; +} diff --git a/home/programs/tmux/tmux-sessionizer.sh b/home/programs/tmux/tmux-sessionizer.sh new file mode 100755 index 0000000..d3571db --- /dev/null +++ b/home/programs/tmux/tmux-sessionizer.sh @@ -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 diff --git a/home/programs/waybar/default.nix b/home/programs/waybar/default.nix new file mode 100644 index 0000000..7b71361 --- /dev/null +++ b/home/programs/waybar/default.nix @@ -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; + } + ''; + }; +} diff --git a/home/services/default.nix b/home/services/default.nix new file mode 100644 index 0000000..32b8a3b --- /dev/null +++ b/home/services/default.nix @@ -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; + }; + }; +} diff --git a/home/services/mako/default.nix b/home/services/mako/default.nix new file mode 100644 index 0000000..14b9ca9 --- /dev/null +++ b/home/services/mako/default.nix @@ -0,0 +1,11 @@ +{ + config, + inputs, + pkgs, + ... +}: { + services.mako = { + enable = true; + defaultTimeout = 7000; + }; +} diff --git a/hosts/artemis/configuration.nix b/hosts/artemis/configuration.nix new file mode 100644 index 0000000..5bc5240 --- /dev/null +++ b/hosts/artemis/configuration.nix @@ -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]; +} diff --git a/hosts/artemis/containers.nix b/hosts/artemis/containers.nix new file mode 100644 index 0000000..232a7cf --- /dev/null +++ b/hosts/artemis/containers.nix @@ -0,0 +1,10 @@ +{ + virtualisation = { + libvirtd.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + }; +} diff --git a/hosts/artemis/default.nix b/hosts/artemis/default.nix index fd01edd..f3eb160 100644 --- a/hosts/artemis/default.nix +++ b/hosts/artemis/default.nix @@ -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"; diff --git a/hosts/artemis/hardware-configuration.nix b/hosts/artemis/hardware-configuration.nix index 2437cb0..cd54cfc 100644 --- a/hosts/artemis/hardware-configuration.nix +++ b/hosts/artemis/hardware-configuration.nix @@ -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; } diff --git a/hosts/artemis/home.nix b/hosts/artemis/home.nix new file mode 100644 index 0000000..ca0ea2e --- /dev/null +++ b/hosts/artemis/home.nix @@ -0,0 +1,13 @@ +{inputs, ...}: { + home-manager = { + sharedModules = [ + { + stylix.targets = { + fish.enable = false; + }; + } + ]; + users.c = import ../../home; + extraSpecialArgs = {inherit inputs;}; + }; +} diff --git a/hosts/artemis/networking.nix b/hosts/artemis/networking.nix new file mode 100644 index 0000000..351432d --- /dev/null +++ b/hosts/artemis/networking.nix @@ -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"]; + }; +} diff --git a/hosts/artemis/programs.nix b/hosts/artemis/programs.nix new file mode 100644 index 0000000..ba391f1 --- /dev/null +++ b/hosts/artemis/programs.nix @@ -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 + ''; + }; + }; + }; +} diff --git a/hosts/artemis/ssh.nix b/hosts/artemis/ssh.nix new file mode 100644 index 0000000..3b0fd1e --- /dev/null +++ b/hosts/artemis/ssh.nix @@ -0,0 +1,10 @@ +{ + services.openssh = { + enable = true; + settings = { + PasswordAuthentication = true; + KbdInteractiveAuthentication = true; + PermitRootLogin = "no"; + }; + }; +} diff --git a/hosts/artemis/styling.nix b/hosts/artemis/styling.nix new file mode 100644 index 0000000..77b7aeb --- /dev/null +++ b/hosts/artemis/styling.nix @@ -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; + }; + }; +} diff --git a/hosts/default.nix b/hosts/default.nix index 7dc82c3..570ebdc 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -1,6 +1,6 @@ {utils}: let hosts = utils.lib.exportModules [ - # ./artemis + ./artemis ./hermes ]; in {inherit hosts;} diff --git a/hosts/hermes/configuration.nix b/hosts/hermes/configuration.nix index 623095a..b5355d1 100644 --- a/hosts/hermes/configuration.nix +++ b/hosts/hermes/configuration.nix @@ -27,6 +27,8 @@ in { ]; }; + nix.settings.trusted-users = ["media"]; + environment.systemPackages = with pkgs; [ wget tree diff --git a/hosts/hermes/networking.nix b/hosts/hermes/networking.nix index f20c35e..7ddb42b 100644 --- a/hosts/hermes/networking.nix +++ b/hosts/hermes/networking.nix @@ -4,8 +4,8 @@ pkgs, ... }: { - networking.hostName = "hermes"; networking = { + hostName = "hermes"; enableIPv6 = false; firewall.allowedTCPPorts = [80 443 8265]; firewall.checkReversePath = false; diff --git a/modules/nix.nix b/modules/nix.nix index 379244e..24e714d 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -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"]; diff --git a/secrets/secrets.nix b/secrets/secrets.nix index 251f280..8bed17e 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -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; } diff --git a/secrets/wg-conf.age b/secrets/wg-conf.age index fceaf283cc52123bc0414c392874e2da16a5c793..7ec71f6da90d2985b89825166544740b17b445c2 100644 GIT binary patch delta 665 zcmX@jvXga!PJO;pN>Qb&YobeeX;7+rXhyDic!hSDg}y~WkgsKAm|s<~nSOb2l#xN6 zCzn@tvU^B)Mp;H=dUip1pl4WeluxE(NqVJIYO1?ofRnjds$p=1vtfo$D3`9CLUD11 zZfc5=si~o*LTXl)PeHmuWk^U#W=>^pwtjkwc3zcJT76)SSw(V^S5cN>iC1x|v1O)L zQG~C%xp{aXS5i)XWtp*QL4aF^YmljK@cNM%l>c2!l5Pf(tAo>!Ow zx^;=ciTPfE3Smj1o{1r5uHFHGK3Sf{rY^3L<}SXO>CTQx$wnrD5y{5&`W1%yZfV|* z$z0Akf%&FoVdcISIj$}q&c;b$6((+GWnq@(MV1kz`K1}bN#@4k!J%m;j$FFBx(b=O z!HH&Rf%z#07W$Ui<;jjAnJLD;hJl{>i78pW$&uz3VFm^kE*4p?kzD+nZr_?<#`I6H za9^9xK9{a_pP6>*m(-LWs9#a{bkW{M2rdW|ZGB-Os?EmB&XDZgV zbbXwr_dr$A!SA2^VV7Ia>Xx6gJf6wQeqi1c!Dgq8YV45_UWOktGoPgQ@;=tmled|? zxv4y~so_%A+ZWv07W)cBl#Y1)T3zrN%u=DGF)=e{TP)~rel z6YIB_Tn*iOYq#l>IURGdb0TjZJt-}useX3<-p&;sTeEsXPCf~lAYa~gK>ho{lT1>_ z6}Y~uYI9Cv&^jw(_sn(z*V8S(wnyi&7xYa1ZY0Jx?ODxQ&MMhknpX=acLxO(N{UPf y-D0`tcIUqI*1RUQiyxgPZ>zaH)sars4c?Cr>WJ9>*Up|2uK)nLcLW6h delta 534 zcmdnVdYWZ|PIyFeNkDP7tFvjIcVKy-rBP|FXL(vtrB8`VVQzXdnZDV91t#9< z`q~wFdD#X2F6NHl@zuLV&B879$9IMO*i9fN? zM!}ieLZABGd;K<4c>AsHi*^go713)6d z|98K=FXuepZ>%??wRW-X%=C1gZTEswvK5y7KKA?6xf3#uNogU_%^j#it4Ct7TAdwIOY`~UVct$|97zcm7O6(`O;W*~fH|E|?y-R?@gb{2oUe%uvp zom4!-HOr~_Z%Nwe?g=6iHql}(xmBVsy*bo{O=M-(NMDTVjXih8_56-4VmBYKt3Q^1 lyk-(>BmbG&P4~jX{-$s++ea|3nY*w;@df9BU-ma<0RUfj;*