diff --git a/flake.lock b/flake.lock index fdd87b3..261a439 100755 --- a/flake.lock +++ b/flake.lock @@ -20,13 +20,34 @@ "type": "github" } }, + "emacs-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1666527089, + "narHash": "sha256-FDcMUWaL9XmZKGT+cLTH07sSxm14BJ4+49AYFTpITNI=", + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "92c3c295daea9e71578b2e4f0cbe9906013c1adc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "emacs-overlay", + "type": "github" + } + }, "flake-utils": { "locked": { - "lastModified": 1631561581, - "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -37,11 +58,11 @@ }, "flake-utils_2": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1631561581, + "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19", "type": "github" }, "original": { @@ -80,6 +101,21 @@ "type": "github" } }, + "flake-utils_5": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -101,6 +137,67 @@ "type": "github" } }, + "hyprland": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "wlroots": "wlroots" + }, + "locked": { + "lastModified": 1667561425, + "narHash": "sha256-StR+7yu1cj72OOPSAYbfWNKkBHTXRsbp743H3k3qm1Y=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "34ad837fd93a55c2a234381c9077fba1c2fd154c", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprpaper": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667775402, + "narHash": "sha256-+k/21qDW+RKBKFKkjRmntWemJR8/5bZyyoDTKr/emCU=", + "owner": "hyprwm", + "repo": "hyprpaper", + "rev": "6d3a15f33cedaa8f01b0f96c8d2a1f8de24bbb33", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprpaper", + "type": "github" + } + }, + "hyprpicker": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1666947305, + "narHash": "sha256-jgiDWLwCf6PQhXLUtSk4btaS/jZwJed2XLnlA51ANQk=", + "owner": "hyprwm", + "repo": "hyprpicker", + "rev": "06be1c9348fdf8ff58fd05f54b62bdd73544db6a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprpicker", + "type": "github" + } + }, "jillo": { "inputs": { "mkNodePackage": "mkNodePackage", @@ -122,7 +219,7 @@ }, "mkNodePackage": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nixpkgs": "nixpkgs", "npmlock2nix": "npmlock2nix", "pnpm2nix": "pnpm2nix" @@ -143,8 +240,10 @@ }, "nix-minecraft": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_3" + "flake-utils": "flake-utils_3", + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1666188576, @@ -239,22 +338,6 @@ } }, "nixpkgs_3": { - "locked": { - "lastModified": 1650161686, - "narHash": "sha256-70ZWAlOQ9nAZ08OU6WY7n4Ij2kOO199dLfNlvO/+pf8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1ffba9f2f683063c2b14c9f4d12c55ad5f4ed887", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { "locked": { "lastModified": 1666164185, "narHash": "sha256-5v+YB4ijeUfg5LCz9ck4gIpCPhIS+qn02OyPJO48bCE=", @@ -269,7 +352,7 @@ "type": "indirect" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { "lastModified": 1659219666, "narHash": "sha256-pzYr5fokQPHv7CmUXioOhhzDy/XyWOIXP4LZvv/T7Mk=", @@ -284,7 +367,7 @@ "type": "indirect" } }, - "nixpkgs_6": { + "nixpkgs_5": { "locked": { "lastModified": 1659102345, "narHash": "sha256-Vbzlz254EMZvn28BhpN8JOi5EuKqnHZ3ujFYgFcSGvk=", @@ -337,11 +420,15 @@ "root": { "inputs": { "agenix": "agenix", + "emacs-overlay": "emacs-overlay", "home-manager": "home-manager", + "hyprland": "hyprland", + "hyprpaper": "hyprpaper", + "hyprpicker": "hyprpicker", "jillo": "jillo", "nix-minecraft": "nix-minecraft", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "nixpkgs-master": "nixpkgs-master", "nixpkgs-unstable": "nixpkgs-unstable", "watch-party": "watch-party" @@ -349,8 +436,8 @@ }, "rust-overlay": { "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_6" + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1659179790, @@ -368,8 +455,8 @@ }, "watch-party": { "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_5", + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_4", "rust-overlay": "rust-overlay" }, "locked": { @@ -382,6 +469,24 @@ "type": "git", "url": "file:///home/oatmealine/watch-party" } + }, + "wlroots": { + "flake": false, + "locked": { + "host": "gitlab.freedesktop.org", + "lastModified": 1666466001, + "narHash": "sha256-ZjxAnqtcGmHQHKL1Z9sIraDnzIqrJleWcJXfPtzAm74=", + "owner": "wlroots", + "repo": "wlroots", + "rev": "c2d2773df57750081b16d56da13b5015d752cbd7", + "type": "gitlab" + }, + "original": { + "host": "gitlab.freedesktop.org", + "owner": "wlroots", + "repo": "wlroots", + "type": "gitlab" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 73cd580..6450505 100755 --- a/flake.nix +++ b/flake.nix @@ -14,19 +14,46 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; # agenix - age-encrypted secrets - agenix.url = "github:ryantm/agenix"; - agenix.inputs.nixpkgs.follows = "nixpkgs"; + agenix = { + url = "github:ryantm/agenix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; - nixos-hardware.url = "github:nixos/nixos-hardware"; - nixos-hardware.inputs.nixpkgs.follows = "nixpkgs"; + nixos-hardware = { + url = "github:nixos/nixos-hardware"; + inputs.nixpkgs.follows = "nixpkgs"; + }; - nix-minecraft.url = "github:Infinidoge/nix-minecraft"; + nix-minecraft = { + url = "github:Infinidoge/nix-minecraft"; + inputs.nixpkgs.follows = "nixpkgs"; + }; jillo.url = "/home/oatmealine/jillo"; watch-party.url = "/home/oatmealine/watch-party"; + + emacs-overlay = { + url = "github:nix-community/emacs-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + hyprland = { + url = "github:hyprwm/Hyprland"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + hyprpaper = { + url = "github:hyprwm/hyprpaper"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + hyprpicker = { + url = "github:hyprwm/hyprpicker"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, nixpkgs-master, nix-minecraft, ... }: + outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, nixpkgs-master, nix-minecraft, hyprland, hyprpaper, hyprpicker, ... }: let system = "x86_64-linux"; @@ -53,5 +80,3 @@ devShell."${system}" = import ./shell.nix { inherit pkgs; }; }; } - - diff --git a/hosts/dark-firepit/authorizedKeys.nix b/hosts/dark-firepit/authorizedKeys.nix index 3ea2571..a182b7a 100644 --- a/hosts/dark-firepit/authorizedKeys.nix +++ b/hosts/dark-firepit/authorizedKeys.nix @@ -18,4 +18,8 @@ hostname = "mayflower@BMW-M550d-xDrive"; # car 5 ssh = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCIeoFll8XBRwu6vbQHUj4LNbvRvLMTdqUP1su9hGxow8olGKIZf/nINkt+/B5w4UumLFnOOROIWVhSH/04oxGVCWdk29ibPo3yYJIAoQrqOXYWCrGpMDd0z2n/0CwyXRAqmQ4rubnUZtnlabYCLh0eWMu9ZRSsSrQ+MiaUHES/vv1MxlLWHoEGfhLzoq7SyIsK88Mirgu9lSeHd/+2JybkQ9kNEWTxnzUPKwOMT0zLGo7vNLmfPhJ1WilQoV4F8skDbbgFNRuLO13ZDn6W2jqZ+zjf3H9khzPivG+oaKfHLMDD/zCwHM3rm3JyJzX7GF9EV73AqbNkzzsf54vKhYRT"; } + { + hostname = "aether@phone"; + ssh = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP5LPWVgsFAH9XErXGZB+lzwb/+7EiEb6eatNWoJag5i JuiceSSH"; + } ] diff --git a/hosts/dark-firepit/srb2k.nix b/hosts/dark-firepit/srb2k.nix new file mode 100644 index 0000000..e69de29 diff --git a/modules/editors/doomemacs.nix b/modules/editors/doomemacs.nix new file mode 100644 index 0000000..6ef05db --- /dev/null +++ b/modules/editors/doomemacs.nix @@ -0,0 +1,13 @@ +{ config, options, pkgs, lib, ... }: + +with lib; +let + cfg = config.modules.editors.doomemacs; +in { + options.modules.editors.doomemacs = { + enable = mkOption { + type = types.bool; + default = false; + }; + }; +} diff --git a/modules/hyprland.nix b/modules/hyprland.nix new file mode 100644 index 0000000..325bf1c --- /dev/null +++ b/modules/hyprland.nix @@ -0,0 +1,110 @@ +{ config, pkgs, options, lib, ... }: + +with lib; +let + cfg = config.modules.hyprland; +in { + options.modules.hyprland = { + enable = mkOption { + type = types.bool; + default = false; + }; + }; + + config = mkIf cfg.enable { + programs.hyprland = { + enable = true; + }; + + home._.wayland.windowManager.hyprland = { + enable = true; + extraConfig = '' + monitor=,preferred,auto,1 + + input { + kb_layout = us + follow_mouse = 1 + touchpad { + natural_scroll = yes + } + sensitivity = -0.2 + } + + general { + main_mod = SUPER + gaps_in = 4 + gaps_out = 4 + border_size = 2 + col.active_border = rgba(f7cd23ff) + col.inactive_border = rbga(0f0f0fff) + cursor_inactive_timeout = 5 + damage_tracking = full + layout = dwindle + } + + decoration { + multisample_edges = true + rounding = 4 + active_opacity = 1.0 + inactive_opacity = 0.8 + fullscreen_opacity = 1.9 + blur = true + blur_size = 6 + blur_passes = 2 + blur_new_optimizations = on + drop_shadow = true + shadow_range = 4 + shadow_render_ + col.shadow = rgba(0f0f0f33) + col.shadow_inactive = rgba(0f0f0f1e) + } + + gestures { + workspace_swipe = on + } + + animations { + enable = true + + bezier = workspacesBezier, 0.1, 0.9, 0.1, 0.9 + bezier = fadeBezier, 0, 0, 0.6, 1 + + animation = fade, 1, 8, fadeBezier + animation = windows, 1, 8, fadeBezier, popin 60% + animation = workspaces, 1, 4, workspacesbezier, slide + } + + $mainMod = SUPER + + bind = $mainMod, enter, exec, alacritty + bind = $mainMod, C, killactive, + bind = $mainMod, P, exec, nwggrid + + bind = $mainMod, 1, workspace, 1 + bind = $mainMod, 2, workspace, 2 + bind = $mainMod, 3, workspace, 3 + bind = $mainMod, 4, workspace, 4 + bind = $mainMod, 5, workspace, 5 + bind = $mainMod, 6, workspace, 6 + bind = $mainMod, 7, workspace, 7 + bind = $mainMod, 8, workspace, 8 + bind = $mainMod, 9, workspace, 9 + bind = $mainMod, 0, workspace, 10 + + bind = $mainMod SHIFT, 1, movetoworkspace, 1 + bind = $mainMod SHIFT, 2, movetoworkspace, 2 + bind = $mainMod SHIFT, 3, movetoworkspace, 3 + bind = $mainMod SHIFT, 4, movetoworkspace, 4 + bind = $mainMod SHIFT, 5, movetoworkspace, 5 + bind = $mainMod SHIFT, 6, movetoworkspace, 6 + bind = $mainMod SHIFT, 7, movetoworkspace, 7 + bind = $mainMod SHIFT, 8, movetoworkspace, 8 + bind = $mainMod SHIFT, 9, movetoworkspace, 9 + bind = $mainMod SHIFT, 0, movetoworkspace, 10 + + bindm = $mainMod, mouse:272, movewindow + bindm = $mainMod, mouse:273, resizewindow + ''; + }; + }; +} diff --git a/modules/hyprpaper.nix b/modules/hyprpaper.nix new file mode 100644 index 0000000..3a0f88c --- /dev/null +++ b/modules/hyprpaper.nix @@ -0,0 +1,16 @@ +{ pkgs, options, config, lib, ... }: + +with lib; +let + cfg = config.modules.hyprpaper; +in { + options.modules.hyprpaper = { + enable = mkOption { + type = types.bool; + default = false; + }; + }; + + config = mkIf cfg.enable { + }; +} diff --git a/modules/services/mosh.nix b/modules/services/mosh.nix new file mode 100644 index 0000000..1159758 --- /dev/null +++ b/modules/services/mosh.nix @@ -0,0 +1,42 @@ +{ config, lib, pkgs, options, ... }: + +with lib; +let + cfg = config.modules.services.glitch-soc; +in { + options.modules.services.glitch-soc = { + enable = mkOption { + type = types.bool; + default = false; + }; + domain = mkOption { + type = types.str; + default = "feditest.oat.zone"; + }; + }; + + config = mkIf cfg.enable { + services = { + mastodon = { + enable = true; + configureNginx = true; + localDomain = cfg.domain; + package = pkgs._.glitch-soc; + + smtp = { + fromAddress = "mastodon@${cfg.domain}"; + user = "mastodon"; + }; + + extraConfig = { + AUTHORIZED_FETCH = "false"; + LIMITED_FEDERATION_MODE = "true"; + + MAX_TOOT_CHARS = "69420"; + MAX_DISPLAY_NAME_CHARS = "32"; + MAX_BIO_CHARS = "69420"; + }; + }; + }; + }; +} diff --git a/modules/services/nextcloud.nix b/modules/services/nextcloud.nix index e7ab0a5..550618d 100644 --- a/modules/services/nextcloud.nix +++ b/modules/services/nextcloud.nix @@ -10,13 +10,18 @@ in { default = false; }; + package = mkOption { + type = types.package; + default = pkgs.nextcloud24; + }; + domain = mkOption { type = types.str; default = null; }; }; - config = mkIf cfg.enable { + config = mkIf cfg.enable (trace "the balls" { assertions = [ { assertion = cfg.domain != null; description = "Nextcloud requires a domain."; @@ -25,9 +30,42 @@ in { services.nextcloud = { enable = true; - package = pkgs.nextcloud24; + package = cfg.package; hostName = cfg.domain; - config.adminpassFile = "/etc/nextcloudpass"; + config = { + dbtype = "pgsql"; + dbuser = "nextcloud"; + dbhost = "/run/postgresql"; + dbname = "nextcloud"; + adminpassFile = "/etc/nextcloudpass"; + adminuser = "root"; +# "log_type" = "systemd"; +# "syslog_tag" = "Nextcloud"; +# loglevel = "3"; + }; }; - }; + + services.nginx.virtualHosts.${cfg.domain} = { + forceSSL = true; + enableACME = true; + locations."^~ /.well-known" = {}; + }; + + services.postgresql = { + enable = true; + ensureDatabases = [ "nextcloud" ]; + ensureUsers = [ + { name = "nextcloud"; + ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES"; + } + ]; + }; + + systemd.services."nextcloud-setup" = { + requires = ["postgresql.service"]; + after = ["postgresql.service"]; + }; + + networking.firewall.allowedTCPPorts = [ 80 443 ]; + }); } diff --git a/modules/services/writefreely.nix b/modules/services/writefreely.nix new file mode 100644 index 0000000..6ca0a7b --- /dev/null +++ b/modules/services/writefreely.nix @@ -0,0 +1,26 @@ +{ config, lib, options, pkgs, ... }: + +with lib; +let + cfg = config.modules.services.writefreely; +in { + options.modules.services.writefreely = { + enable = mkOption { + type = types.bool; + default = false; + }; + + package = mkOption { + type = types.package; + default = pkgs.writefreely; + }; + + user = mkOption { + type = types.str; + default = "writefreely"; + }; + }; + + config = mkIf cfg.enable { + }; +} diff --git a/result b/result index f326e4f..684b19a 120000 --- a/result +++ b/result @@ -1 +1 @@ -/nix/store/gzfm8qnjflwp4yd8v5ikjf7pz86957z5-nixos-system-dark-firepit-22.05.20221019.c5203ab \ No newline at end of file +/nix/store/sslhrsnzddsq0j115ac87d61bivxhamm-nixos-system-dark-firepit-22.05.20221019.c5203ab \ No newline at end of file