diff options
-rw-r--r-- | flake.nix | 15 | ||||
-rw-r--r-- | home/default.nix | 2 | ||||
-rw-r--r-- | home/neovim/completion.nix | 1 | ||||
-rw-r--r-- | home/neovim/default.nix | 3 | ||||
-rw-r--r-- | home/neovim/editing-plugins.nix | 26 | ||||
-rw-r--r-- | hosts/ahmed/cloudflare-proxy/default.nix (renamed from modules/nixos/cloudflare-proxy/default.nix) | 45 | ||||
-rw-r--r-- | hosts/ahmed/configuration.nix | 43 | ||||
-rw-r--r-- | hosts/ahmed/disable-screen/default.nix (renamed from modules/nixos/disable-screen/default.nix) | 0 | ||||
-rw-r--r-- | hosts/ahmed/duksebot/default.nix (renamed from modules/nixos/duksebot/default.nix) | 27 | ||||
-rw-r--r-- | hosts/ahmed/forsvarsarper/default.nix (renamed from modules/nixos/forsvarsarper/default.nix) | 11 | ||||
-rw-r--r-- | hosts/ahmed/forsvarsarper/script.py (renamed from modules/nixos/forsvarsarper/script.py) | 0 | ||||
-rw-r--r-- | hosts/ahmed/git.linus.onl/about.html (renamed from modules/nixos/git.linus.onl/about.html) | 0 | ||||
-rw-r--r-- | hosts/ahmed/git.linus.onl/default.nix (renamed from modules/nixos/git.linus.onl/default.nix) | 43 | ||||
-rw-r--r-- | hosts/ahmed/hellohtml.linus.onl/default.nix (renamed from modules/nixos/hellohtml.linus.onl/default.nix) | 23 | ||||
-rw-r--r-- | hosts/ahmed/home/default.nix | 9 | ||||
-rw-r--r-- | hosts/ahmed/linus.onl/default.nix (renamed from modules/nixos/linus.onl/default.nix) | 19 | ||||
-rw-r--r-- | hosts/ahmed/nofitications.linus.onl/default.nix (renamed from modules/nixos/nofitications.linus.onl/default.nix) | 24 | ||||
-rw-r--r-- | hosts/ahmed/ssh/default.nix (renamed from hosts/ahmed/ssh.nix) | 0 | ||||
-rw-r--r-- | hosts/muhammed/configuration.nix | 4 | ||||
-rw-r--r-- | hosts/muhammed/home/default.nix | 10 | ||||
-rw-r--r-- | hosts/muhammed/home/iterm2/default.nix (renamed from home/iterm2/default.nix) | 0 | ||||
-rw-r--r-- | hosts/muhammed/home/neovim/conjure.nix (renamed from home/neovim/plugins.nix) | 25 | ||||
-rw-r--r-- | hosts/muhammed/home/neovim/default.nix | 8 | ||||
-rw-r--r-- | hosts/muhammed/home/neovim/lsp.nix (renamed from home/neovim/lsp.nix) | 4 | ||||
-rw-r--r-- | hosts/muhammed/home/noweb/default.nix (renamed from home/noweb/default.nix) | 0 | ||||
-rw-r--r-- | modules/darwin/default.nix | 3 | ||||
-rw-r--r-- | modules/nixos/default.nix | 19 | ||||
-rw-r--r-- | modules/nixos/graphics/default.nix | 37 |
28 files changed, 140 insertions, 261 deletions
@@ -44,13 +44,6 @@ metadata = nixpkgs.lib.importTOML ./metadata.toml; }; - darwinModules = - builtins.attrValues (import ./modules/darwin).general - ++ builtins.attrValues (import ./modules/darwin).personal; - nixosModules = - builtins.attrValues (import ./modules/nixos).general - ++ builtins.attrValues (import ./modules/nixos).personal; - # This is a function that generates an attribute by calling a function # you pass to it, with each system as an argument. `systems` lists all # supported systems. @@ -75,7 +68,7 @@ ./hosts/common.nix ./home ] - ++ darwinModules; + ++ builtins.attrValues (import ./modules/darwin); }; }; @@ -92,7 +85,7 @@ ./hosts/common.nix ./home ] - ++ nixosModules; + ++ builtins.attrValues (import ./modules/nixos); }; }; @@ -111,8 +104,8 @@ overlays = import ./overlays; # We export the generally applicable modules. - darwinModules = (import ./modules/darwin).geneal; - nixosModules = (import ./modules/nixos).general; + darwinModules = import ./modules/darwin; homeModules = import ./modules/home-manager; + nixosModules = import ./modules/nixos; }; } diff --git a/home/default.nix b/home/default.nix index 93c3720..d02e7b3 100644 --- a/home/default.nix +++ b/home/default.nix @@ -22,8 +22,6 @@ ./git ./dev-utils ./networking-utils - ./iterm2 - ./noweb ] ++ builtins.attrValues flakeOutputs.homeModules; diff --git a/home/neovim/completion.nix b/home/neovim/completion.nix index 904491d..3776674 100644 --- a/home/neovim/completion.nix +++ b/home/neovim/completion.nix @@ -43,6 +43,5 @@ cmp-calc cmp-buffer cmp-path - cmp-conjure ]; } diff --git a/home/neovim/default.nix b/home/neovim/default.nix index 1739047..56f6171 100644 --- a/home/neovim/default.nix +++ b/home/neovim/default.nix @@ -1,10 +1,9 @@ # This file contains the HM configuration options for Neovim. {...}: { imports = [ - ./lsp.nix ./filetype.nix ./completion.nix - ./plugins.nix + ./editing-plugins.nix ]; programs.neovim = { diff --git a/home/neovim/editing-plugins.nix b/home/neovim/editing-plugins.nix new file mode 100644 index 0000000..23c7d63 --- /dev/null +++ b/home/neovim/editing-plugins.nix @@ -0,0 +1,26 @@ +# This module sets up and configures various miscellaneous plugins. +# TODO: I fear this file will become the utils.lua of my Neovim configuration. Remove it! +{pkgs, ...}: { + programs.neovim.plugins = [ + { + plugin = pkgs.vimPlugins.vim-localvimrc; + type = "viml"; + config = '' + let g:localvimrc_persistent = 1 + let g:localvimrc_name = [ "local.vim", "editors/local.vim" ] + ''; + } + { + plugin = pkgs.vimPlugins.vim-sneak; + type = "viml"; + config = '' + let g:sneak#s_next = 1 + let g:sneak#use_ic_scs = 1 + map f <Plug>Sneak_f + map F <Plug>Sneak_F + map t <Plug>Sneak_t + map T <Plug>Sneak_T + ''; + } + ]; +} diff --git a/modules/nixos/cloudflare-proxy/default.nix b/hosts/ahmed/cloudflare-proxy/default.nix index 657722d..45ccaa6 100644 --- a/modules/nixos/cloudflare-proxy/default.nix +++ b/hosts/ahmed/cloudflare-proxy/default.nix @@ -1,15 +1,13 @@ # This module adds some extra configuration useful when running behid a Cloudflare Proxy. -# +# Mainly, it blocks all incomming conncections on relevant ports that aren't +# coming from an official CloudFlare domain. { config, lib, pkgs, + metadata, ... }: let - inherit (lib.options) mkEnableOption mkOption; - inherit (lib.modules) mkIf; - inherit (lib.types) listOf nonEmptyStr port; - # TODO: What happens when these get out of date??? Huh??? You little pissbaby fileToList = x: lib.strings.splitString "\n" (builtins.readFile x); cfipv4 = fileToList (pkgs.fetchurl { @@ -21,27 +19,10 @@ hash = "sha256-np054+g7rQDE3sr9U8Y/piAp89ldto3pN9K+KCNMoKk="; }); - cfg = config.modules.cloudflare-proxy; + IPv4Whitelist = [metadata.hosts.muhammed.ipAddress]; + IPv6Whitelist = []; in { - options.modules.cloudflare-proxy = { - enable = mkEnableOption "Cloudflare proxy IP extraction for NGINX"; - - firewall = { - IPv4Whitelist = mkOption { - description = "List of IPv4 addresses (or ranges) added to the whitelist."; - type = listOf nonEmptyStr; - default = []; - }; - - IPv6Whitelist = mkOption { - description = "List of IPv6 addresses (or ranges) added to the whitelist."; - type = listOf nonEmptyStr; - default = []; - }; - }; - }; - - config = mkIf cfg.enable { + config = { # Teach NGINX how to extract the proxied IP from proxied requests. # # See: https://nixos.wiki/wiki/Nginx#Using_realIP_when_behind_CloudFlare_or_other_CDN @@ -63,9 +44,8 @@ in { in '' # Flush the old firewall rules. This behavior mirrors the default firewall service. # See: https://github.com/NixOS/nixpkgs/blob/ac911bf685eecc17c2df5b21bdf32678b9f88c92/nixos/modules/services/networking/firewall-iptables.nix#L59-L66 - # TEMP: Removed 2>/dev/null - ip46tables --delete INPUT --protocol tcp --destination-port 80 --syn --jump ${chain} || true - ip46tables --delete INPUT --protocol tcp --destination-port 443 --syn --jump ${chain} || true + ip46tables --delete INPUT --protocol tcp --destination-port 80 --syn --jump ${chain} 2>/dev/null || true + ip46tables --delete INPUT --protocol tcp --destination-port 443 --syn --jump ${chain} 2>/dev/null || true ip46tables --flush ${chain} || true ip46tables --delete-chain ${chain} || true @@ -76,8 +56,8 @@ in { ${allow-interface config.networking.firewall.trustedInterfaces} # Allow local whitelisted IPs through - ${allow-ip "iptables" cfg.firewall.IPv4Whitelist} - ${allow-ip "ip6tables" cfg.firewall.IPv6Whitelist} + ${allow-ip "iptables" IPv4Whitelist} + ${allow-ip "ip6tables" IPv6Whitelist} # Allow Cloudflare's IP ranges through. ${allow-ip "iptables" cfipv4} @@ -100,9 +80,8 @@ in { # default firewall at the time of writing. # # See: https://github.com/NixOS/nixpkgs/blob/ac911bf685eecc17c2df5b21bdf32678b9f88c92/nixos/modules/services/networking/firewall-iptables.nix#L218-L219 - # TEMP: Removed 2>/dev/null - ip46tables --delete INPUT --protocol tcp --destination-port 80 --syn --jump ${chain} || true - ip46tables --delete INPUT --protocol tcp --destination-port 443 --syn --jump ${chain} || true + ip46tables --delete INPUT --protocol tcp --destination-port 80 --syn --jump ${chain} 2>/dev/null || true + ip46tables --delete INPUT --protocol tcp --destination-port 443 --syn --jump ${chain} 2>/dev/null || true ''; }; }; diff --git a/hosts/ahmed/configuration.nix b/hosts/ahmed/configuration.nix index e0eb202..27c35eb 100644 --- a/hosts/ahmed/configuration.nix +++ b/hosts/ahmed/configuration.nix @@ -3,12 +3,21 @@ { config, pkgs, - metadata, ... }: { imports = [ ./hardware-configuration.nix - ./ssh.nix + + ./cloudflare-proxy + ./disable-screen + ./duksebot + ./forsvarsarper + ./git.linus.onl + ./hellohtml.linus.onl + ./linus.onl + ./nofitications.linus.onl + ./ssh + ./home ]; # Create the main user. @@ -47,31 +56,11 @@ }; services.cloudflare-dyndns.domains = ["minecraft.linus.onl"]; - # Set up dukse server. Det er satme hårdt at være overduksepåmindelsesansvarlig. - services.duksebot.enable = true; - # Virtual hosts. + # Each module for a HTTP service will register a virtual host. services.nginx.enable = true; - modules."linus.onl" = { - enable = true; - useACME = true; - }; - modules."notifications.linus.onl" = { - enable = true; - useACME = true; - }; - modules."git.linus.onl" = { - enable = true; - useACME = true; - }; - modules."hellohtml.linus.onl" = { - enable = true; - useACME = true; - }; - - services.forsvarsarper.enable = true; - # Configure ACME for various HTTPS services. + # Configure ACME. This is used by various HTTP services through the NGINX virtual hosts. security.acme = { acceptTerms = true; defaults.email = "linusvejlo+${config.networking.hostName}[email protected]"; @@ -94,12 +83,6 @@ # Listen for HTTP connections. networking.firewall.allowedTCPPorts = [80 443]; - # We are running behind CF proxy. - modules.cloudflare-proxy = { - enable = true; - firewall.IPv4Whitelist = [metadata.hosts.muhammed.ipAddress]; - }; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It's perfectly fine and recommended to leave diff --git a/modules/nixos/disable-screen/default.nix b/hosts/ahmed/disable-screen/default.nix index 638437a..638437a 100644 --- a/modules/nixos/disable-screen/default.nix +++ b/hosts/ahmed/disable-screen/default.nix diff --git a/modules/nixos/duksebot/default.nix b/hosts/ahmed/duksebot/default.nix index 4c10cd8..f15b0ff 100644 --- a/modules/nixos/duksebot/default.nix +++ b/hosts/ahmed/duksebot/default.nix @@ -1,27 +1,16 @@ -# This module defines an on-demand minecraft server service which turns off the -# server when it's not being used. +# This module defines systemd unit which runs a script that sends Discrord +# messages. I use it to notify my classmates about who's on cleaning duty. You +# are probably not interested in this. + { config, - lib, pkgs, - modulesPath, ... }: let - inherit (lib) mkIf mkOption mkEnableOption types; - - cfg = config.services.duksebot; + # What script to run. + package = pkgs.duksebot; in { - options.services.duksebot = { - enable = mkEnableOption "duksebot daily reminder"; - - package = mkOption { - description = "What package to use"; - default = pkgs.duksebot; - type = types.package; - }; - }; - - config = mkIf cfg.enable { + config = { # Create a user to run the server under. users.users.duksebot = { description = "Runs daily dukse reminder"; @@ -53,7 +42,7 @@ in { # Load the secret environment variables. export $(grep -v '^#' ${config.age.secrets.duksebot-env.path} | xargs) # Kick off. - exec "${cfg.package}"/bin/duksebot + exec "${package}"/bin/duksebot ''; }; diff --git a/modules/nixos/forsvarsarper/default.nix b/hosts/ahmed/forsvarsarper/default.nix index 7052f04..c1c6163 100644 --- a/modules/nixos/forsvarsarper/default.nix +++ b/hosts/ahmed/forsvarsarper/default.nix @@ -2,17 +2,10 @@ # server when it's not being used. { config, - lib, pkgs, ... -}: let - inherit (lib) mkIf mkEnableOption; - - cfg = config.services.forsvarsarper; -in { - options.services.forsvarsarper.enable = mkEnableOption "daily scan for tests"; - - config = mkIf cfg.enable { +}:{ + config = { # Create a user to run the server under. users.users.forsvarsarper = { description = "Runs daily scan for tests"; diff --git a/modules/nixos/forsvarsarper/script.py b/hosts/ahmed/forsvarsarper/script.py index 7f12508..7f12508 100644 --- a/modules/nixos/forsvarsarper/script.py +++ b/hosts/ahmed/forsvarsarper/script.py diff --git a/modules/nixos/git.linus.onl/about.html b/hosts/ahmed/git.linus.onl/about.html index 2d18ca4..2d18ca4 100644 --- a/modules/nixos/git.linus.onl/about.html +++ b/hosts/ahmed/git.linus.onl/about.html diff --git a/modules/nixos/git.linus.onl/default.nix b/hosts/ahmed/git.linus.onl/default.nix index 88e4f6f..46c74e9 100644 --- a/modules/nixos/git.linus.onl/default.nix +++ b/hosts/ahmed/git.linus.onl/default.nix @@ -1,30 +1,18 @@ { - lib, config, pkgs, - options, metadata, ... }: let - inherit (lib) mkEnableOption mkOption types mkIf; - git-shell = "${pkgs.gitMinimal}/bin/git-shell"; - cfg = config.modules."git.linus.onl"; -in { - options.modules."git.linus.onl" = { - enable = mkEnableOption "git.linus.onl static site"; - - useACME = mkEnableOption "built-in HTTPS stuff"; + # Enables HTTPS stuff. + useACME = true; - location = mkOption { - description = "Where repositories will be stored."; - type = types.path; - default = "/srv/git"; - }; - }; - - config = mkIf cfg.enable { + # Where repositories will be stored. + location = "/srv/git"; +in { + config = { # Create a user which # See: https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server users.users.git = { @@ -33,7 +21,7 @@ in { group = "git"; # FIXME: Is serving the home-directory of a user (indirectly through CGit) a bad idea? - home = cfg.location; + home = location; createHome = false; # Restrict this user to Git-related activities. @@ -54,18 +42,19 @@ in { environment.shells = [git-shell]; # Create repo directory. It must be readable to NGINX. + # NOTE: If location != "/srv/git" you may want to change this! # See: https://git.zx2c4.com/cgit/about/faq#why-doesnt-cgit-findshow-my-repo - system.activationScripts.create-cgit-scan-path = mkIf (cfg.location == options.modules."git.linus.onl".location.default) '' - mkdir -p ${cfg.location} - chown ${toString config.users.users.git.name} ${cfg.location} - chgrp ${toString config.users.groups.git.name} ${cfg.location} - chmod 755 ${cfg.location} + system.activationScripts.create-cgit-scan-path = '' + mkdir -p ${location} + chown ${toString config.users.users.git.name} ${location} + chgrp ${toString config.users.groups.git.name} ${location} + chmod 755 ${location} ''; # Public git viewer. services.cgit."git.linus.onl" = { enable = true; - scanPath = cfg.location; + scanPath = location; settings = { root-title = "Linus' public projects"; root-desc = "hello yes this is the git server"; @@ -88,8 +77,8 @@ in { # The CGit service creates the virtual host, but it does not enable ACME. services.nginx.virtualHosts."git.linus.onl" = { - enableACME = cfg.useACME; - forceSSL = cfg.useACME; + enableACME = useACME; + forceSSL = useACME; }; }; } diff --git a/modules/nixos/hellohtml.linus.onl/default.nix b/hosts/ahmed/hellohtml.linus.onl/default.nix index feb56ba..2d09788 100644 --- a/modules/nixos/hellohtml.linus.onl/default.nix +++ b/hosts/ahmed/hellohtml.linus.onl/default.nix @@ -1,19 +1,10 @@ -{ - lib, - config, - ... -}: let - inherit (lib) mkEnableOption mkIf; +# This module defines the HelloHTML web server. It extends the NGINX config +# with a virtual server that proxies the local HelloHTML service. - cfg = config.modules."hellohtml.linus.onl"; +{ ... }: let + useACME = true; in { - options.modules."hellohtml.linus.onl" = { - enable = mkEnableOption "hellohtml.linus.onl site"; - - useACME = mkEnableOption "built-in HTTPS stuff"; - }; - - config = mkIf cfg.enable { + config = { # Start service listening on socket /tmp/hellohtml.sock services.hellohtml = { enable = true; @@ -24,8 +15,8 @@ in { # Use NGINX as reverse proxy. services.nginx.virtualHosts."hellohtml.linus.onl" = { - enableACME = cfg.useACME; - forceSSL = cfg.useACME; + enableACME = useACME; + forceSSL = useACME; locations."/" = rec { proxyPass = "http://localhost:8538"; # Disable settings that might mess with the text/event-stream response of the /listen/:id endpoint. diff --git a/hosts/ahmed/home/default.nix b/hosts/ahmed/home/default.nix new file mode 100644 index 0000000..a031e96 --- /dev/null +++ b/hosts/ahmed/home/default.nix @@ -0,0 +1,9 @@ +# Here we extend the HM user defined in `home/default.nix`. All the global HM +# stuff is defined in there. The only imports here are specific to this host. +{...}: { + home-manager.users.linus = { + imports = [ + # empty for now + ]; + }; +} diff --git a/modules/nixos/linus.onl/default.nix b/hosts/ahmed/linus.onl/default.nix index 52703fe..c31eb73 100644 --- a/modules/nixos/linus.onl/default.nix +++ b/hosts/ahmed/linus.onl/default.nix @@ -1,22 +1,15 @@ { pkgs, lib, - config, ... }: let - inherit (lib) mkEnableOption mkOption types mkIf optional; - + # The domain to serve. Also kinda embedded in the name of the module?? domain = "linus.onl"; - cfg = config.modules."${domain}"; + # Enable HTTPS stuff. + useACME = true; in { - options.modules."${domain}" = { - enable = mkEnableOption "${domain} static site"; - - useACME = mkEnableOption "built-in HTTPS stuff"; - }; - - config = mkIf cfg.enable { + config = { # Create a user to run the build script under. users.users."${domain}-builder" = { description = "builds ${domain}"; @@ -91,8 +84,8 @@ in { services.nginx = { virtualHosts."${domain}" = { # NOTE: 'forceSSL' will cause an infite loop, if the cloudflare proxy does NOT connect over HTTPS. - enableACME = cfg.useACME; - forceSSL = cfg.useACME; + enableACME = useACME; + forceSSL = useACME; root = "/var/www/${domain}"; }; }; diff --git a/modules/nixos/nofitications.linus.onl/default.nix b/hosts/ahmed/nofitications.linus.onl/default.nix index c050ef4..f3ab04f 100644 --- a/modules/nixos/nofitications.linus.onl/default.nix +++ b/hosts/ahmed/nofitications.linus.onl/default.nix @@ -1,19 +1,9 @@ -{ - lib, - config, - ... -}: let - inherit (lib) mkEnableOption mkIf; - - cfg = config.modules."notifications.linus.onl"; +{ ... }: let + # Enable HTTPS stuff. + useACME = true; in { - options.modules."notifications.linus.onl" = { - enable = mkEnableOption "notifications.linus.onl static site"; - - useACME = mkEnableOption "built-in HTTPS stuff"; - }; - - config = mkIf cfg.enable { + config = { + # Start the proxied service. services.push-notification-api = { enable = true; }; @@ -23,8 +13,8 @@ in { # Use NGINX as reverse proxy. services.nginx.virtualHosts."notifications.linus.onl" = { - enableACME = cfg.useACME; - forceSSL = cfg.useACME; + enableACME = useACME; + forceSSL = useACME; locations."/" = { recommendedProxySettings = true; proxyPass = "http://unix:/run/push-notification-api.sock"; diff --git a/hosts/ahmed/ssh.nix b/hosts/ahmed/ssh/default.nix index 3c6b7ad..3c6b7ad 100644 --- a/hosts/ahmed/ssh.nix +++ b/hosts/ahmed/ssh/default.nix diff --git a/hosts/muhammed/configuration.nix b/hosts/muhammed/configuration.nix index 9119a55..c629b22 100644 --- a/hosts/muhammed/configuration.nix +++ b/hosts/muhammed/configuration.nix @@ -1,5 +1,9 @@ # This file contains the configuration for my Macbook Pro. {flakeInputs, ...}: { + imports = [ + ./home + ]; + # Specify the location of this configuration file. Very meta. environment.darwinConfig = flakeInputs.self + "/hosts/muhammed/configuration.nix"; diff --git a/hosts/muhammed/home/default.nix b/hosts/muhammed/home/default.nix new file mode 100644 index 0000000..b0b126c --- /dev/null +++ b/hosts/muhammed/home/default.nix @@ -0,0 +1,10 @@ +# Here we extend the HM user defined in `home/default.nix`. All the global HM +# stuff is defined in there. +{...}: { + home-manager.users.linus = { + imports = [ + ./iterm2 + ./noweb + ]; + }; +} diff --git a/home/iterm2/default.nix b/hosts/muhammed/home/iterm2/default.nix index d868e57..d868e57 100644 --- a/home/iterm2/default.nix +++ b/hosts/muhammed/home/iterm2/default.nix diff --git a/home/neovim/plugins.nix b/hosts/muhammed/home/neovim/conjure.nix index 54f6d9d..0acfadd 100644 --- a/home/neovim/plugins.nix +++ b/hosts/muhammed/home/neovim/conjure.nix @@ -1,28 +1,6 @@ -# This module sets up and configures various miscellaneous plugins. -# TODO: I fear this file will become the utils.lua of my Neovim configuration. Remove it! {pkgs, ...}: { programs.neovim.plugins = [ { - plugin = pkgs.vimPlugins.vim-localvimrc; - type = "viml"; - config = '' - let g:localvimrc_persistent = 1 - let g:localvimrc_name = [ "local.vim", "editors/local.vim" ] - ''; - } - { - plugin = pkgs.vimPlugins.vim-sneak; - type = "viml"; - config = '' - let g:sneak#s_next = 1 - let g:sneak#use_ic_scs = 1 - map f <Plug>Sneak_f - map F <Plug>Sneak_F - map t <Plug>Sneak_t - map T <Plug>Sneak_T - ''; - } - { # Add interactive repl-like environment. # See also the addition of cmp-conjure in `completion.nix`. # See also the addition of clojure in `dev-utils/default.nix`. @@ -86,5 +64,8 @@ vim.cmd [[autocmd User ConjureEval if expand("%:t") =~ "^conjure-log-" | exec "normal G" | endif]] ''; } + + # Compe plugin to interact with conjure. + pkgs.vimPlugins.cmp-conjure ]; } diff --git a/hosts/muhammed/home/neovim/default.nix b/hosts/muhammed/home/neovim/default.nix new file mode 100644 index 0000000..905896c --- /dev/null +++ b/hosts/muhammed/home/neovim/default.nix @@ -0,0 +1,8 @@ +# Once again we extend the global configuration defined in `home/neovim/` with +# some stuff specific to this host (mainly development stuff). +{...}: { + imports = [ + ./lsp.nix + ./conjure.nix + ]; +} diff --git a/home/neovim/lsp.nix b/hosts/muhammed/home/neovim/lsp.nix index 0c2e290..06745da 100644 --- a/home/neovim/lsp.nix +++ b/hosts/muhammed/home/neovim/lsp.nix @@ -1,6 +1,4 @@ -# This module sets up LSP server configurations for Neovim. It is waaay -# overcomplicated as it kind of turned into an experiment in generating Lua -# code from a Nix attrset. +# This module sets up LSP server configurations for Neovim. {pkgs, ...}: { programs.neovim.plugins = [ { diff --git a/home/noweb/default.nix b/hosts/muhammed/home/noweb/default.nix index ef67862..ef67862 100644 --- a/home/noweb/default.nix +++ b/hosts/muhammed/home/noweb/default.nix diff --git a/modules/darwin/default.nix b/modules/darwin/default.nix index 48f0511..832940f 100644 --- a/modules/darwin/default.nix +++ b/modules/darwin/default.nix @@ -1,4 +1,3 @@ { - general.still-awake = import ./still-awake; - personal = {}; + still-awake = import ./still-awake; } diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 1393627..b813155 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -1,19 +1,4 @@ { - # These components are - general = { - on-demand-minecraft = import ./on-demand-minecraft; - cloudflare-proxy = import ./cloudflare-proxy; - disable-screen = import ./disable-screen; - hellohtml = import ./hellohtml; - }; - - personal = { - duksebot = import ./duksebot; - graphics = import ./graphics; - "linus.onl" = import ./linus.onl; - "notifications.linus.onl" = import ./nofitications.linus.onl; - "git.linus.onl" = import ./git.linus.onl; - "hellohtml.linus.onl" = import ./hellohtml.linus.onl; - forsvarsarper = import ./forsvarsarper; - }; + on-demand-minecraft = import ./on-demand-minecraft; + hellohtml = import ./hellohtml; } diff --git a/modules/nixos/graphics/default.nix b/modules/nixos/graphics/default.nix deleted file mode 100644 index f54d043..0000000 --- a/modules/nixos/graphics/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -# This module configures a basic graphical environment. I use this sometimes for -# ahmed when muhammed is being repaired. -{ - config, - lib, - pkgs, - ... -}: let - inherit (lib) mkEnableOption mkIf; - - cfg = config.modules.graphics; -in { - options.modules.graphics.enable = mkEnableOption "basic graphical environment"; - - config = mkIf cfg.enable { - services.xserver.enable = true; - - # Match console keyboard layout but swap capslock and escape. - # TODO: Create a custom keymap with esc/capslock swap so console can use it. - services.xserver.layout = config.console.keyMap; - services.xserver.xkbOptions = "caps:swapescape"; - - # Enable touchpad support. - services.xserver.libinput.enable = true; - - services.xserver.windowManager.dwm.enable = true; - - # Enable sound. - sound.enable = true; - hardware.pulseaudio.enable = true; - - environment.systemPackages = with pkgs; [ - st # suckless terminal - dwm is pretty sucky without this - dmenu # application launcher - ]; - }; -} |