summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.nix15
-rw-r--r--home/default.nix2
-rw-r--r--home/neovim/completion.nix1
-rw-r--r--home/neovim/default.nix3
-rw-r--r--home/neovim/editing-plugins.nix26
-rw-r--r--hosts/ahmed/cloudflare-proxy/default.nix (renamed from modules/nixos/cloudflare-proxy/default.nix)45
-rw-r--r--hosts/ahmed/configuration.nix43
-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.nix9
-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.nix4
-rw-r--r--hosts/muhammed/home/default.nix10
-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.nix8
-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.nix3
-rw-r--r--modules/nixos/default.nix19
-rw-r--r--modules/nixos/graphics/default.nix37
28 files changed, 140 insertions, 261 deletions
diff --git a/flake.nix b/flake.nix
index 588bf98..f9142a0 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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
- ];
- };
-}