~ruther/nixos-config

29359bf62e26f7a4139ee778d5cf8aaae5b445b1 — Frantisek Bohacek 10 months ago 30eecf6
feat: add gnome iso installatiom image config
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
  ];
}

Do not follow this link