|
|
@ -605,13 +605,22 @@ Deploy this configuration with ~nixos-rebuild switch --flake /etc/dotfiles/#nixo |
|
|
|
|
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle hosts/nixos/default.nix |
|
|
|
# <<file-warning>> |
|
|
|
{ ... }: |
|
|
|
{ config, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
imports = [ |
|
|
|
./configuration.nix |
|
|
|
./hardware.nix |
|
|
|
]; |
|
|
|
|
|
|
|
modules.x11.enable = true; |
|
|
|
modules.ssh.enable = true; |
|
|
|
modules.hugo.enable = true; |
|
|
|
modules.godot.enable = true; |
|
|
|
modules.flakes.enable = true; |
|
|
|
modules.cachix.enable = true; |
|
|
|
modules.docker.enable = true; |
|
|
|
modules.firefox.enable = true; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -695,9 +704,20 @@ Modules are files combined by [[https://nixos.org/][NixOS]] to produce the full |
|
|
|
|
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/x11.nix |
|
|
|
# <<file-warning>> |
|
|
|
{ config, pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let cfg = config.modules.x11; |
|
|
|
in { |
|
|
|
options.modules.x11 = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
services.xserver.enable = true; |
|
|
|
services.xserver.layout = "us"; |
|
|
|
services.xserver.libinput.enable = true; |
|
|
@ -733,6 +753,7 @@ Modules are files combined by [[https://nixos.org/][NixOS]] to produce the full |
|
|
|
fira-code-symbols |
|
|
|
emacs-all-the-icons-fonts |
|
|
|
]; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -752,9 +773,20 @@ Apply some configuration to the default settings: |
|
|
|
|
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/ssh.nix |
|
|
|
# <<file-warning>> |
|
|
|
{ config, pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let cfg = config.modules.ssh; |
|
|
|
in { |
|
|
|
options.modules.ssh = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
services.openssh = { |
|
|
|
enable = true; |
|
|
|
settings = { |
|
|
@ -762,6 +794,7 @@ Apply some configuration to the default settings: |
|
|
|
PasswordAuthentication = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -776,9 +809,12 @@ Apply some configuration to the default settings: |
|
|
|
|
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/hugo.nix |
|
|
|
# <<file-warning>> |
|
|
|
{ config, pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let |
|
|
|
cfg = config.modules.hugo; |
|
|
|
mySiteDir = "/etc/dotfiles/docs/public/"; |
|
|
|
mySiteTgt = "ubuntu@chrishayward.xyz:/var/www/chrishayward"; |
|
|
|
mySiteBuild = pkgs.writeShellScriptBin "site-build" '' |
|
|
@ -791,11 +827,20 @@ let |
|
|
|
''; |
|
|
|
|
|
|
|
in { |
|
|
|
options.modules.hugo = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
environment.systemPackages = [ |
|
|
|
pkgs.hugo |
|
|
|
mySiteBuild |
|
|
|
mySiteUpdate |
|
|
|
]; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -810,9 +855,22 @@ in { |
|
|
|
|
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/godot.nix |
|
|
|
# <<file-warning>> |
|
|
|
{ config, pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let |
|
|
|
cfg = config.modules.godot; |
|
|
|
|
|
|
|
in { |
|
|
|
options.modules.godot = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
environment.systemPackages = [ |
|
|
|
pkgs.tiled |
|
|
|
pkgs.godot |
|
|
@ -820,6 +878,7 @@ in { |
|
|
|
pkgs.godot-headless |
|
|
|
pkgs.gdtoolkit |
|
|
|
]; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -834,9 +893,20 @@ in { |
|
|
|
|
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/flakes.nix |
|
|
|
# <<file-warning>> |
|
|
|
{ config, pkgs, inputs, ... }: |
|
|
|
{ config, options, lib, pkgs, inputs, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let cfg = config.modules.flakes; |
|
|
|
in { |
|
|
|
options.modules.flakes = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
nix = { |
|
|
|
package = pkgs.nixUnstable; |
|
|
|
extraOptions = '' |
|
|
@ -848,6 +918,7 @@ in { |
|
|
|
config = { allowUnfree = true; }; |
|
|
|
overlays = [ inputs.emacs-overlay.overlay ]; |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -862,9 +933,22 @@ in { |
|
|
|
|
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/cachix.nix |
|
|
|
# <<file-warning>> |
|
|
|
{ config, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let |
|
|
|
cfg = config.modules.cachix; |
|
|
|
|
|
|
|
in { |
|
|
|
options.modules.cachix = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
nix = { |
|
|
|
settings = { |
|
|
|
substituters = [ |
|
|
@ -875,6 +959,7 @@ in { |
|
|
|
]; |
|
|
|
}; |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -889,9 +974,20 @@ in { |
|
|
|
|
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/docker.nix |
|
|
|
# <<file-warning>> |
|
|
|
{ config, pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let cfg = config.modules.docker; |
|
|
|
in { |
|
|
|
options.modules.docker = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
# Enable the docker virutalization platform. |
|
|
|
virtualisation.docker = { |
|
|
|
enable = true; |
|
|
@ -907,6 +1003,7 @@ in { |
|
|
|
pkgs.docker-compose |
|
|
|
pkgs.docker-machine |
|
|
|
]; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -921,18 +1018,30 @@ in { |
|
|
|
|
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/firefox.nix |
|
|
|
# <<file-warning>> |
|
|
|
{ config, pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let |
|
|
|
cfg = config.modules.firefox; |
|
|
|
myFirefox = pkgs.writeShellScriptBin "firefox" '' |
|
|
|
HOME=~/.local/share/mozilla ${pkgs.firefox-bin}/bin/firefox |
|
|
|
''; |
|
|
|
|
|
|
|
in { |
|
|
|
options.modules.firefox = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
# NOTE: Use the binary until module is developed. |
|
|
|
environment.systemPackages = [ |
|
|
|
myFirefox |
|
|
|
]; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -947,6 +1056,7 @@ inputs.home-manager.nixosModules.home-manager { |
|
|
|
home-manager.useUserPackages = true; |
|
|
|
home-manager.users.chris = { |
|
|
|
home.stateVersion = "23.05"; |
|
|
|
|
|
|
|
imports = [ |
|
|
|
<<module-git>> |
|
|
|
<<module-gpg>> |
|
|
@ -954,6 +1064,18 @@ inputs.home-manager.nixosModules.home-manager { |
|
|
|
<<module-gtk>> |
|
|
|
<<module-emacs>> |
|
|
|
]; |
|
|
|
|
|
|
|
modules.git = { |
|
|
|
enable = true; |
|
|
|
name = "Christopher James Hayward"; |
|
|
|
email = "chris@chrishayward.xyz"; |
|
|
|
key = "37AB1CB72B741E478CA026D43025DCBD46F81C0F"; |
|
|
|
}; |
|
|
|
|
|
|
|
modules.gpg.enable = true; |
|
|
|
modules.vim.enable = true; |
|
|
|
modules.gtk.enable = true; |
|
|
|
modules.emacs.enable = true; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
@ -977,9 +1099,13 @@ This module MUST be included within home manager |
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/git.nix |
|
|
|
# <<file-warning>> |
|
|
|
# <<home-manager-warning>> |
|
|
|
{ pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let |
|
|
|
cfg = config.modules.git; |
|
|
|
|
|
|
|
# Fix any corruptions in the local copy. |
|
|
|
myGitFix = pkgs.writeShellScriptBin "git-fix" '' |
|
|
|
if [ -d .git/objects/ ]; then |
|
|
@ -991,18 +1117,42 @@ let |
|
|
|
''; |
|
|
|
|
|
|
|
in { |
|
|
|
options.modules.git = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
|
|
|
|
name = mkOption { |
|
|
|
type = str; |
|
|
|
default = "Anon"; |
|
|
|
}; |
|
|
|
|
|
|
|
email = mkOption { |
|
|
|
type = str; |
|
|
|
default = "anon@devnull.com"; |
|
|
|
}; |
|
|
|
|
|
|
|
key = mkOption { |
|
|
|
type = str; |
|
|
|
default = "ABCD1234"; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
home.packages = [ myGitFix ]; |
|
|
|
|
|
|
|
programs.git = { |
|
|
|
enable = true; |
|
|
|
userName = "Christopher James Hayward"; |
|
|
|
userEmail = "chris@chrishayward.xyz"; |
|
|
|
userName = cfg.name; |
|
|
|
userEmail = cfg.email; |
|
|
|
|
|
|
|
signing = { |
|
|
|
key = "37AB1CB72B741E478CA026D43025DCBD46F81C0F"; |
|
|
|
key = cfg.key; |
|
|
|
signByDefault = true; |
|
|
|
}; |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -1018,15 +1168,28 @@ in { |
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/gpg.nix |
|
|
|
# <<file-warning>> |
|
|
|
# <<home-manager-warning>> |
|
|
|
{ pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let |
|
|
|
cfg = config.modules.gpg; |
|
|
|
in { |
|
|
|
options.modules.gpg = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
services.gpg-agent = { |
|
|
|
enable = true; |
|
|
|
defaultCacheTtl = 1800; |
|
|
|
enableSshSupport = true; |
|
|
|
pinentryFlavor = "gtk2"; |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -1047,9 +1210,20 @@ in { |
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/vim.nix |
|
|
|
# <<file-warning>> |
|
|
|
# <<home-manager-warning>> |
|
|
|
{ pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let cfg = config.modules.vim; |
|
|
|
in { |
|
|
|
options.modules.vim = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
programs.neovim = { |
|
|
|
enable = true; |
|
|
|
viAlias = true; |
|
|
@ -1068,6 +1242,7 @@ in { |
|
|
|
vim-polyglot |
|
|
|
]; |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -1083,9 +1258,20 @@ in { |
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/gtk.nix |
|
|
|
# <<file-warning>> |
|
|
|
# <<home-manager-warning>> |
|
|
|
{ pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
{ |
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let cfg = config.modules.gtk; |
|
|
|
in { |
|
|
|
options.modules.gtk = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
home.packages = [ |
|
|
|
pkgs.nordic |
|
|
|
pkgs.arc-icon-theme |
|
|
@ -1144,6 +1330,7 @@ in { |
|
|
|
gtk-xft-hintstyle=hintmedium |
|
|
|
''; |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -1170,9 +1357,13 @@ in { |
|
|
|
#+BEGIN_SRC nix :noweb yes :tangle modules/emacs.nix |
|
|
|
# <<file-warning>> |
|
|
|
# <<home-manager-warning>> |
|
|
|
{ pkgs, ... }: |
|
|
|
{ config, options, lib, pkgs, ... }: |
|
|
|
|
|
|
|
with lib; |
|
|
|
with lib.types; |
|
|
|
let |
|
|
|
cfg = config.modules.emacs; |
|
|
|
|
|
|
|
myEmacs = pkgs.emacsWithPackagesFromUsePackage { |
|
|
|
config = ../README.org; |
|
|
|
package = <<emacs-native-comp-package>> |
|
|
@ -1231,6 +1422,14 @@ let |
|
|
|
}; |
|
|
|
|
|
|
|
in { |
|
|
|
options.modules.emacs = { |
|
|
|
enable = mkOption { |
|
|
|
type = bool; |
|
|
|
default = false; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
config = mkIf cfg.enable { |
|
|
|
home.packages = [ |
|
|
|
<<emacs-exwm-extras>> |
|
|
|
<<emacs-pass-extras>> |
|
|
@ -1251,6 +1450,7 @@ in { |
|
|
|
<<emacs-exwm-config>> |
|
|
|
<<emacs-exwm-xinitrc>> |
|
|
|
<<emacs-mu4e-config>> |
|
|
|
}; |
|
|
|
} |
|
|
|
#+END_SRC |
|
|
|
|
|
|
@ -1809,7 +2009,7 @@ epkgs.hydra |
|
|
|
#+BEGIN_SRC emacs-lisp |
|
|
|
;; Configure the font when running as `emacs-server'. |
|
|
|
(custom-set-faces |
|
|
|
'(default ((t (:inherit nil :height 120 :family "Iosevka"))))) |
|
|
|
'(default ((t (:inherit nil :height 120 :family "Iosevka Term"))))) |
|
|
|
|
|
|
|
;; Define a `hydra' function for scaling the text interactively. |
|
|
|
(defhydra hydra-text-scale (:timeout 4) |
|
|
|