M flake.nix => flake.nix +5 -0
@@ 71,6 71,11 @@
dwlb = pkgs.callPackage ./pkgs/dwlb.nix {};
};
+ installIsos = import ./nixos/isos {
+ inherit (nixpkgs-stable) lib;
+ inherit inputs;
+ };
+
devShells.x86_64-linux.default = pkgs.mkShell {
packages = [
pkgs.nil
A nixos/isos/common/default.nix => nixos/isos/common/default.nix +50 -0
@@ 0,0 1,50 @@
+{ config, pkgs, lib, ... }:
+
+{
+ imports = [
+ ./users.nix
+ ./ssh.nix
+ ./vim.nix
+ ./emacs.nix
+ ./shell-apps.nix
+ ];
+
+ isoImage.squashfsCompression = "zstd -Xcompression-level 6";
+
+ fonts.packages = [
+ (pkgs.nerdfonts.override {
+ fonts = [ "FiraCode" ];
+ })
+ ];
+
+ environment.systemPackages = [
+ pkgs.foot
+ ];
+
+ environment.variables = {
+ SELF = config.deps-inject.inputs.self;
+ };
+
+ nix = {
+ settings = {
+ flake-registry = "";
+ experimental-features = [ "nix-command" "flakes" ];
+ };
+
+ registry = lib.mkMerge [
+ (lib.mapAttrs (n: input: {
+ flake = input;
+ }) config.deps-inject.inputs)
+
+ {
+ nixpkgs = lib.mkForce {
+ flake = config.deps-inject.inputs.nixpkgs-stable;
+ };
+ }
+ ];
+
+ nixPath = [
+ "nixpkgs=flake:nixpkgs"
+ ];
+ };
+}
A nixos/isos/common/emacs.nix => nixos/isos/common/emacs.nix +13 -0
@@ 0,0 1,13 @@
+{ lib, pkgs, ... }:
+
+{
+ environment.systemPackages = [
+ ((pkgs.emacs.override {
+ withNativeCompilation = false;
+ }).pkgs.withPackages(epkgs: [
+ epkgs.vterm
+ epkgs.sqlite
+ epkgs.treesit-grammars.with-all-grammars
+ ]))
+ ];
+}
A nixos/isos/common/shell-apps.nix => nixos/isos/common/shell-apps.nix +30 -0
@@ 0,0 1,30 @@
+{ pkgs, config, ... }:
+
+{
+ environment.systemPackages = [
+ # (pkgs.writeShellApplication "git-clone-nixos-config" { buildInputs = [ pkgs.git ]; } ''
+ # git clone https://github.com/Rutherther/nixos-config
+ # mkdir -p nixos-config/nixos/hosts/$1
+ # nixos-generate-config --dir nixos-config/nixos/hosts/$1 --root /mnt
+ # '')
+
+ (pkgs.writeShellApplication {
+ name = "git-clone-nixos-config";
+ text = ''
+ git clone https://github.com/Rutherther/nixos-config
+ '';
+ })
+ (pkgs.writeShellApplication {
+ name = "copy-self";
+ text = ''
+ cp -r ${config.deps-inject.inputs.self} self
+ '';
+ })
+ (pkgs.writeShellApplication {
+ name = "link-self";
+ text = ''
+ ln -s ${config.deps-inject.inputs.self} self
+ '';
+ })
+ ];
+}
A nixos/isos/common/ssh.nix => nixos/isos/common/ssh.nix +24 -0
@@ 0,0 1,24 @@
+{ config, lib, pkgs, ... }:
+
+let
+ sshKeys = [
+ # ThinkPad
+ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD0mhvKW3dgLTGLGMgGdMgUFz14F16pRzSAH7IU/OssnYXmi+TlkXLakHtmNWLdb6IEEjS2od0iDW4I71awJjL/VqRSBBt/1t6ndM6M79pD6feU9uYaPMB20ORyZh5D+1zjWX4cFVlcfCQ2bUyV0D+VRoDrN/YWFhPU0XNMZjatqN8JNKljM0hwWt9OPuQdlwG5KnrbDPUn8gf6kZtfVWRamDrLLMKsGBeGw4oZVJLAPYJlaYps15VuySTw114n6/L16qpH/rUgDc5QFyrmtIE+l5wd5QteH489eG+8gAZfsbYj+pihek09rHch318ecsLYz/DxotB71BXsQH7nb0NPHk1VI8L6//meoCXNJc4Itbg7Jh2Oo/bDfYX9IyPEw2TRa3P+rbEO9N4vMxCgX+TuHNX/mTk0OFpJVu8AAwMlF2lalI8fpBKospP5PFoyIgrW7ab5dkQRGDTk+Bw1ed4KXMKl6RJejvDPuOAmpeOlosinz6OPj/rbR9hR48makxk= ruther@nixos"
+ # Phone
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbHBbRaxwfOIyYYL6caWx8Afre8R+GRIgbX/zSGNmMq ruther@nord2-phone"
+ # Server
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGE9SGfSVF61WEiPwJg7VR+hWCYwCERX59xIcIF/TJlg ruther@pallium"
+ ];
+in {
+ services.openssh = {
+ enable = true;
+ settings = {
+ PermitEmptyPasswords = false;
+ };
+ };
+
+ users.users =
+ (lib.genAttrs config.usersList (name: {
+ openssh.authorizedKeys.keys = sshKeys;
+ }));
+}
A nixos/isos/common/users.nix => nixos/isos/common/users.nix +22 -0
@@ 0,0 1,22 @@
+{ lib, ... }:
+
+{
+ options.usersList = lib.mkOption {
+ type = lib.types.listOf lib.types.str;
+ };
+
+ config = {
+ usersList = [ "root" "nixos" "ruther" ];
+ # usersList = lib.attrNames config.users.users? infrec?
+
+ users.users = lib.mkMerge [
+ {
+ ruther = {
+ isNormalUser = true;
+ extraGroups = [ "wheel" ];
+ initialHashedPassword = "";
+ };
+ }
+ ];
+ };
+}
A nixos/isos/common/vim.nix => nixos/isos/common/vim.nix +53 -0
@@ 0,0 1,53 @@
+{ pkgs, ... }:
+
+{
+ programs.neovim = {
+ defaultEditor = true;
+ enable = true;
+ vimAlias = true;
+ configure = {
+ customRC = ''
+ set iskeyword=!-~,^*,^45,^124,^34,192-255,^_,^.,^,,^/,^\
+ syntax enable
+
+ set relativenumber
+ set cc=80
+ set list
+
+ set smarttab
+ set expandtab
+ set shiftwidth=2
+ set tabstop=2
+
+ highlight Comment cterm=italic gui=italic " Comments become italic
+ if &diff
+ colorscheme blue
+ endif
+ '';
+ packages.myVimPackage = with pkgs.vimPlugins; {
+ start = [
+ direnv-vim
+
+ vim-nix
+ vim-markdown
+
+ vim-lastplace
+ auto-pairs
+ vim-gitgutter
+
+ wombat256-vim
+ srcery-vim
+
+ lightline-vim
+ indent-blankline-nvim
+
+ nvim-surround
+ vim-easymotion
+ vim-sneak
+
+ vim-commentary
+ ];
+ };
+ };
+ };
+}
A nixos/isos/default.nix => nixos/isos/default.nix +34 -0
@@ 0,0 1,34 @@
+{ lib, inputs }:
+
+let
+ depsInjectModule = {
+ options.deps-inject.inputs = lib.mkOption { type = with lib.types; attrsOf unspecified; };
+ config.deps-inject.inputs = inputs;
+ };
+ systemModule = system: {
+ nixpkgs.hostPlatform = system;
+ };
+
+ isos = {
+ gnome-install-iso = system: lib.nixosSystem {
+ modules = [
+ ./gnome-installation.nix
+ depsInjectModule
+ (systemModule system)
+ ];
+ };
+
+ # dwl-install-iso = system: lib.nixosSystem {
+ # modules = [
+ # ./dwl-installation.nix
+ # depsInjectModule
+ # (systemModule system)
+ # ];
+ # };
+ };
+ systems = [ "x86_64-linux" "aarch64-linux" ];
+in lib.genAttrs systems (system:
+ lib.mapAttrs
+ (name: iso: ((iso system).config.system.build.isoImage))
+ isos
+)
A nixos/isos/gnome-installation.nix => nixos/isos/gnome-installation.nix +8 -0
@@ 0,0 1,8 @@
+{ config, lib, pkgs, modulesPath, ... }:
+
+{
+ imports = [
+ (modulesPath + "/installer/cd-dvd/installation-cd-graphical-gnome.nix")
+ ./common
+ ];
+}