diff --git a/src/modules/system/corn/default.nix b/src/modules/system/corn/default.nix new file mode 100644 index 0000000..eff2c15 --- /dev/null +++ b/src/modules/system/corn/default.nix @@ -0,0 +1,38 @@ +{ pkgs, lib, config, ... }: + +with lib; +let + cfg = config.modules.corn; + +in +{ options.modules.corn = { enable = mkEnableOption "corn"; }; + + imports = [ + ./core-lightning + ./sparrow-cli + ]; + + config = mkIf cfg.enable { + users = { + users = { + "bitcoind" = { + description = "bitcoind system user"; + isSystemUser = true; + group = "bitcoin"; + }; + }; + groups = { + "bitcoin" = { + members = [ "core-lightning" "electrs" ]; + }; + }; + }; + services.bitcoind = { + "main-net" = { + enable = true; + user = "bitcoind"; + group = "bitcoin"; + }; + }; + }; +} diff --git a/src/modules/system/corn/modules/core-lightning/default.nix b/src/modules/system/corn/modules/core-lightning/default.nix new file mode 100644 index 0000000..30c65c6 --- /dev/null +++ b/src/modules/system/corn/modules/core-lightning/default.nix @@ -0,0 +1,25 @@ +{ lib, pkgs, config, ... }: + +with lib; + let cfg = config.modules.corn.core-lightning; + +in +{ options.modules.corn.core-lightning = { enable = mkEnableOption "corn.core-lightning"; }; + config = mkIf cfg.enable { + home.packages = with pkgs; [ + clightning + ]; + + systemd.services.clightning = { + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + script = '' + ${pkgs.clightning}/bin/lightningd --conf=... + ''; + serviceConfig = { + User = "core-lighting"; + Group = "bitcoin"; + }; + }; + }; +} diff --git a/src/modules/system/corn/modules/default.nix b/src/modules/system/corn/modules/default.nix new file mode 100644 index 0000000..7d57eba --- /dev/null +++ b/src/modules/system/corn/modules/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./core-lightning + ./sparrow-cli + ]; +} diff --git a/src/modules/system/corn/modules/electrs/default.nix b/src/modules/system/corn/modules/electrs/default.nix new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/system/corn/modules/sparrow-cli/default.nix b/src/modules/system/corn/modules/sparrow-cli/default.nix new file mode 100644 index 0000000..589df5c --- /dev/null +++ b/src/modules/system/corn/modules/sparrow-cli/default.nix @@ -0,0 +1,14 @@ +{ lib, pkgs, config, ... }: + +with lib; + let + cfg = config.modules.corn.sparrow-server; + sparrow-server = import ./derivation.nix { inherit pkgs; }; +in +{ options.modules.corn.sparrow-server = { enable = mkEnableOption "corn.sparrow-server"; }; + config = mkIf cfg.enable { + home.packages = with pkgs; [ + sparrow-server + ]; + }; +} diff --git a/src/modules/system/corn/modules/sparrow-cli/derivation.nix b/src/modules/system/corn/modules/sparrow-cli/derivation.nix new file mode 100644 index 0000000..8e5e698 --- /dev/null +++ b/src/modules/system/corn/modules/sparrow-cli/derivation.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: + +with pkgs; +stdenv.mkDerivation rec { + pname = "sparrow-server"; + version = "1.8.2"; + + src = fetchurl { + url = "https://github.com/sparrowwallet/sparrow/releases/download/${version}/sparrow-server-${version}-x86_64.tar.gz"; + sha256 = "16hyrf8j7mv3m1ry7r2k3w70yxbf6smgcm5d35xy2hjqfmahv65m"; + }; + + installPhase = '' + mkdir -p $out/bin + cp -r * $out/bin + ''; + + meta = { + description = "Sparrow Server"; + homepage = "https://sparrowwallet.com/"; + license = stdenv.lib.licenses.mit; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/src/modules/system/default.nix b/src/modules/system/default.nix new file mode 100644 index 0000000..1b5d773 --- /dev/null +++ b/src/modules/system/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./corn + ]; +} diff --git a/src/modules/bash/config/alias.nix b/src/modules/user/bash/config/alias.nix similarity index 100% rename from src/modules/bash/config/alias.nix rename to src/modules/user/bash/config/alias.nix diff --git a/src/modules/bash/config/bashprofile.nix b/src/modules/user/bash/config/bashprofile.nix similarity index 100% rename from src/modules/bash/config/bashprofile.nix rename to src/modules/user/bash/config/bashprofile.nix diff --git a/src/modules/bash/config/bashrc.nix b/src/modules/user/bash/config/bashrc.nix similarity index 100% rename from src/modules/bash/config/bashrc.nix rename to src/modules/user/bash/config/bashrc.nix diff --git a/src/modules/bash/config/prompt.nix b/src/modules/user/bash/config/prompt.nix similarity index 100% rename from src/modules/bash/config/prompt.nix rename to src/modules/user/bash/config/prompt.nix diff --git a/src/modules/bash/default.nix b/src/modules/user/bash/default.nix similarity index 100% rename from src/modules/bash/default.nix rename to src/modules/user/bash/default.nix diff --git a/src/modules/default.nix b/src/modules/user/default.nix similarity index 100% rename from src/modules/default.nix rename to src/modules/user/default.nix diff --git a/src/modules/git/default.nix b/src/modules/user/git/default.nix similarity index 100% rename from src/modules/git/default.nix rename to src/modules/user/git/default.nix diff --git a/src/modules/gpg/default.nix b/src/modules/user/gpg/default.nix similarity index 100% rename from src/modules/gpg/default.nix rename to src/modules/user/gpg/default.nix diff --git a/src/modules/gui/default.nix b/src/modules/user/gui/default.nix similarity index 100% rename from src/modules/gui/default.nix rename to src/modules/user/gui/default.nix diff --git a/src/modules/gui/desktopEnvironments/default.nix b/src/modules/user/gui/desktopEnvironments/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/default.nix rename to src/modules/user/gui/desktopEnvironments/default.nix diff --git a/src/modules/gui/desktopEnvironments/modules/alacritty/config/alacritty.nix b/src/modules/user/gui/desktopEnvironments/modules/alacritty/config/alacritty.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/alacritty/config/alacritty.nix rename to src/modules/user/gui/desktopEnvironments/modules/alacritty/config/alacritty.nix diff --git a/src/modules/gui/desktopEnvironments/modules/alacritty/default.nix b/src/modules/user/gui/desktopEnvironments/modules/alacritty/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/alacritty/default.nix rename to src/modules/user/gui/desktopEnvironments/modules/alacritty/default.nix diff --git a/src/modules/gui/desktopEnvironments/modules/browsers/default.nix b/src/modules/user/gui/desktopEnvironments/modules/browsers/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/browsers/default.nix rename to src/modules/user/gui/desktopEnvironments/modules/browsers/default.nix diff --git a/src/modules/gui/desktopEnvironments/modules/corn/default.nix b/src/modules/user/gui/desktopEnvironments/modules/corn/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/corn/default.nix rename to src/modules/user/gui/desktopEnvironments/modules/corn/default.nix diff --git a/src/modules/gui/desktopEnvironments/modules/default.nix b/src/modules/user/gui/desktopEnvironments/modules/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/default.nix rename to src/modules/user/gui/desktopEnvironments/modules/default.nix diff --git a/src/modules/gui/desktopEnvironments/modules/fun/default.nix b/src/modules/user/gui/desktopEnvironments/modules/fun/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/fun/default.nix rename to src/modules/user/gui/desktopEnvironments/modules/fun/default.nix diff --git a/src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/init.lua b/src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/init.lua similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/init.lua rename to src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/init.lua diff --git a/src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/autocmds.lua b/src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/autocmds.lua similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/autocmds.lua rename to src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/autocmds.lua diff --git a/src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/keymaps.lua b/src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/keymaps.lua similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/keymaps.lua rename to src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/keymaps.lua diff --git a/src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/lazy.lua b/src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/lazy.lua similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/lazy.lua rename to src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/lazy.lua diff --git a/src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/options.lua b/src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/options.lua similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/options.lua rename to src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/config/options.lua diff --git a/src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/plugins/core.lua b/src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/plugins/core.lua similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/plugins/core.lua rename to src/modules/user/gui/desktopEnvironments/modules/neovim/config/lazyvim/lua/plugins/core.lua diff --git a/src/modules/gui/desktopEnvironments/modules/neovim/config/servers.nix b/src/modules/user/gui/desktopEnvironments/modules/neovim/config/servers.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/neovim/config/servers.nix rename to src/modules/user/gui/desktopEnvironments/modules/neovim/config/servers.nix diff --git a/src/modules/gui/desktopEnvironments/modules/neovim/default.nix b/src/modules/user/gui/desktopEnvironments/modules/neovim/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/neovim/default.nix rename to src/modules/user/gui/desktopEnvironments/modules/neovim/default.nix diff --git a/src/modules/gui/desktopEnvironments/modules/utils/default.nix b/src/modules/user/gui/desktopEnvironments/modules/utils/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/utils/default.nix rename to src/modules/user/gui/desktopEnvironments/modules/utils/default.nix diff --git a/src/modules/gui/desktopEnvironments/modules/writing/default.nix b/src/modules/user/gui/desktopEnvironments/modules/writing/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/modules/writing/default.nix rename to src/modules/user/gui/desktopEnvironments/modules/writing/default.nix diff --git a/src/modules/gui/desktopEnvironments/sway/config/rofi.nix b/src/modules/user/gui/desktopEnvironments/sway/config/rofi.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/sway/config/rofi.nix rename to src/modules/user/gui/desktopEnvironments/sway/config/rofi.nix diff --git a/src/modules/gui/desktopEnvironments/sway/config/shellHook.nix b/src/modules/user/gui/desktopEnvironments/sway/config/shellHook.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/sway/config/shellHook.nix rename to src/modules/user/gui/desktopEnvironments/sway/config/shellHook.nix diff --git a/src/modules/gui/desktopEnvironments/sway/config/sway.nix b/src/modules/user/gui/desktopEnvironments/sway/config/sway.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/sway/config/sway.nix rename to src/modules/user/gui/desktopEnvironments/sway/config/sway.nix diff --git a/src/modules/gui/desktopEnvironments/sway/default.nix b/src/modules/user/gui/desktopEnvironments/sway/default.nix similarity index 100% rename from src/modules/gui/desktopEnvironments/sway/default.nix rename to src/modules/user/gui/desktopEnvironments/sway/default.nix diff --git a/src/modules/gui/wallpapers/mountains.jpg b/src/modules/user/gui/wallpapers/mountains.jpg similarity index 100% rename from src/modules/gui/wallpapers/mountains.jpg rename to src/modules/user/gui/wallpapers/mountains.jpg diff --git a/src/modules/utils/default.nix b/src/modules/user/utils/default.nix similarity index 100% rename from src/modules/utils/default.nix rename to src/modules/user/utils/default.nix diff --git a/src/modules/utils/modules/default.nix b/src/modules/user/utils/modules/default.nix similarity index 100% rename from src/modules/utils/modules/default.nix rename to src/modules/user/utils/modules/default.nix diff --git a/src/modules/utils/modules/dev/default.nix b/src/modules/user/utils/modules/dev/default.nix similarity index 100% rename from src/modules/utils/modules/dev/default.nix rename to src/modules/user/utils/modules/dev/default.nix diff --git a/src/modules/utils/modules/email/config/aerc.conf b/src/modules/user/utils/modules/email/config/aerc.conf similarity index 100% rename from src/modules/utils/modules/email/config/aerc.conf rename to src/modules/user/utils/modules/email/config/aerc.conf diff --git a/src/modules/utils/modules/email/config/binds.conf b/src/modules/user/utils/modules/email/config/binds.conf similarity index 100% rename from src/modules/utils/modules/email/config/binds.conf rename to src/modules/user/utils/modules/email/config/binds.conf diff --git a/src/modules/utils/modules/email/default.nix b/src/modules/user/utils/modules/email/default.nix similarity index 100% rename from src/modules/utils/modules/email/default.nix rename to src/modules/user/utils/modules/email/default.nix diff --git a/src/modules/utils/modules/irc/default.nix b/src/modules/user/utils/modules/irc/default.nix similarity index 100% rename from src/modules/utils/modules/irc/default.nix rename to src/modules/user/utils/modules/irc/default.nix diff --git a/src/modules/utils/modules/vim/config/vimrc b/src/modules/user/utils/modules/vim/config/vimrc similarity index 100% rename from src/modules/utils/modules/vim/config/vimrc rename to src/modules/user/utils/modules/vim/config/vimrc diff --git a/src/modules/utils/modules/vim/default.nix b/src/modules/user/utils/modules/vim/default.nix similarity index 100% rename from src/modules/utils/modules/vim/default.nix rename to src/modules/user/utils/modules/vim/default.nix diff --git a/src/systems/desktop/home.nix b/src/systems/desktop/home.nix index 1a01c9d..757781f 100644 --- a/src/systems/desktop/home.nix +++ b/src/systems/desktop/home.nix @@ -6,7 +6,7 @@ home-manager.users.${config.user.name} = { imports = [ ../../user - ../../modules + ../../modules/user ]; programs.home-manager.enable = true; diff --git a/src/systems/desktop/system.nix b/src/systems/desktop/system.nix index 85fb8da..2b886e8 100644 --- a/src/systems/desktop/system.nix +++ b/src/systems/desktop/system.nix @@ -78,14 +78,6 @@ execWheelOnly = true; }; -# System Services - services = { - cron = { - enable = true; - systemCronJobs = []; - }; - }; - # Locale time = { timeZone = "America/New_York"; diff --git a/src/systems/server/default.nix b/src/systems/server/default.nix index 3744368..5d6cab9 100644 --- a/src/systems/server/default.nix +++ b/src/systems/server/default.nix @@ -1 +1,9 @@ -# TODO: nixify the server +{ ... }: + +{ + imports = [ + ../../user + ./hardware.nix + ./system.nix + ]; +} diff --git a/src/systems/server/system.nix b/src/systems/server/system.nix new file mode 100644 index 0000000..f73eabc --- /dev/null +++ b/src/systems/server/system.nix @@ -0,0 +1,104 @@ +{ pkgs, lib, config, ... }: + +{ system.stateVersion = "23.11"; + + imports = [ + ../../modules/system + ]; + +# Users + users.users = { + ${config.user.name} = { + isNormalUser = true; + extraGroups = config.user.groups; + openssh.authorizedKeys.keys = config.user.sshKeys; + }; + }; + +# Nix + nix = { + channel.enable = false; + package = pkgs.nixFlakes; + extraOptions = "experimental-features = nix-command flakes"; + settings = { + auto-optimise-store = true; + trusted-users = [ "${config.user.name}" ]; + }; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + }; + +# Bootloader + boot.loader = { + timeout = null; + grub = { + enable = true; + useOSProber = true; + devices = [ "nodev" ]; + efiSupport = true; + configurationLimit = 5; + }; + + efi = { + canTouchEfiVariables = true; + }; + }; + +# Fonts + fonts.packages = with pkgs; [ + terminus_font + terminus-nerdfont + ]; + +# Sudo Options + security.sudo = { + wheelNeedsPassword = false; + execWheelOnly = true; + }; + +# Locale + time = { + timeZone = "America/New_York"; + hardwareClockInLocalTime = true; + }; + + services.timesyncd = { + enable = true; + servers = [ + "0.pool.ntp.org" + "1.pool.ntp.org" + "2.pool.ntp.org" + "3.pool.ntp.org" + ]; + }; + + i18n.defaultLocale = "en_US.UTF-8"; + + console = { + font = "Lat2-Terminus16"; + useXkbConfig = true; + }; + +# Networking + networking = { + hostName = "archimedes"; + useDHCP = lib.mkDefault true; + networkmanager.enable = true; + firewall = { + enable = true; + allowedTCPPorts = [ 22 80 443 ]; + }; + }; + + services.openssh = { + enable = true; + startWhenNeeded = true; + settings = { + X11Forwarding = false; + PasswordAuthentication = false; + }; + }; +} diff --git a/src/systems/wsl/home.nix b/src/systems/wsl/home.nix index 2bb8d39..679c4a6 100644 --- a/src/systems/wsl/home.nix +++ b/src/systems/wsl/home.nix @@ -6,7 +6,7 @@ home-manager.users.${config.user.name} = { imports = [ ../../user - ../../modules + ../../modules/user ]; programs.home-manager.enable = true; diff --git a/src/systems/wsl/system.nix b/src/systems/wsl/system.nix index 756aff7..332885e 100644 --- a/src/systems/wsl/system.nix +++ b/src/systems/wsl/system.nix @@ -27,6 +27,7 @@ options = "--delete-older-than 30d"; }; }; + # Sudo Options security.sudo = { wheelNeedsPassword = false;