~ruther/nixos-config

3f71d78f3f8add16b7e76f7be604808dcbb35bba — Rutherther 1 year, 6 months ago 44dbf60
Use custom doom emacs setup instead of nix-community/nix-doom-emacs[1;5D
M flake.lock => flake.lock +4 -453
@@ 1,230 1,6 @@
{
  "nodes": {
    "doom-emacs": {
      "inputs": {
        "doom-emacs": "doom-emacs_2",
        "doom-snippets": "doom-snippets",
        "emacs-overlay": "emacs-overlay",
        "emacs-so-long": "emacs-so-long",
        "evil-escape": "evil-escape",
        "evil-markdown": "evil-markdown",
        "evil-org-mode": "evil-org-mode",
        "evil-quick-diff": "evil-quick-diff",
        "explain-pause-mode": "explain-pause-mode",
        "flake-compat": "flake-compat",
        "flake-utils": "flake-utils",
        "format-all": "format-all",
        "nix-straight": "nix-straight",
        "nixpkgs": [
          "nixpkgs"
        ],
        "nose": "nose",
        "ob-racket": "ob-racket",
        "org": "org",
        "org-contrib": "org-contrib",
        "org-yt": "org-yt",
        "php-extras": "php-extras",
        "revealjs": "revealjs",
        "rotate-text": "rotate-text",
        "sln-mode": "sln-mode",
        "ts-fold": "ts-fold",
        "ws-butler": "ws-butler"
      },
      "locked": {
        "lastModified": 1695346081,
        "narHash": "sha256-ELuMibAhsgOEIzoPb9ZodYLcde0qSEP6ZuVIvFDIb6A=",
        "owner": "nix-community",
        "repo": "nix-doom-emacs",
        "rev": "5bbefaee92c4277ff1961b333f9937f5180d15f3",
        "type": "github"
      },
      "original": {
        "owner": "nix-community",
        "repo": "nix-doom-emacs",
        "type": "github"
      }
    },
    "doom-emacs_2": {
      "flake": false,
      "locked": {
        "lastModified": 1662497747,
        "narHash": "sha256-4n7E1fqda7cn5/F2jTkOnKw1juG6XMS/FI9gqODL3aU=",
        "owner": "doomemacs",
        "repo": "doomemacs",
        "rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac",
        "type": "github"
      },
      "original": {
        "owner": "doomemacs",
        "repo": "doomemacs",
        "rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac",
        "type": "github"
      }
    },
    "doom-snippets": {
      "flake": false,
      "locked": {
        "lastModified": 1694887483,
        "narHash": "sha256-KlKhruPSLPSKqUnr5/U65arm16VrY9ORzm+XKNZhpTQ=",
        "owner": "doomemacs",
        "repo": "snippets",
        "rev": "f022984ee1318a4015d5d081b3c3dab5a60dc6ff",
        "type": "github"
      },
      "original": {
        "owner": "doomemacs",
        "repo": "snippets",
        "type": "github"
      }
    },
    "emacs-overlay": {
      "flake": false,
      "locked": {
        "lastModified": 1676366521,
        "narHash": "sha256-i4UAY8t9Au9SJtsgYppa3NHSVf1YkV6yqnNIQd+Km4g=",
        "owner": "nix-community",
        "repo": "emacs-overlay",
        "rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501",
        "type": "github"
      },
      "original": {
        "owner": "nix-community",
        "repo": "emacs-overlay",
        "rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501",
        "type": "github"
      }
    },
    "emacs-so-long": {
      "flake": false,
      "locked": {
        "lastModified": 1575031854,
        "narHash": "sha256-xIa5zO0ZaToDrec1OFjBK6l39AbA4l/CE4LInVu2hi0=",
        "owner": "hlissner",
        "repo": "emacs-so-long",
        "rev": "ed666b0716f60e8988c455804de24b55919e71ca",
        "type": "github"
      },
      "original": {
        "owner": "hlissner",
        "repo": "emacs-so-long",
        "type": "github"
      }
    },
    "evil-escape": {
      "flake": false,
      "locked": {
        "lastModified": 1588439096,
        "narHash": "sha256-aB2Ge5o/93B18tPf4fN1c+O46CNh/nOqwLJbox4c8Gw=",
        "owner": "hlissner",
        "repo": "evil-escape",
        "rev": "819f1ee1cf3f69a1ae920e6004f2c0baeebbe077",
        "type": "github"
      },
      "original": {
        "owner": "hlissner",
        "repo": "evil-escape",
        "type": "github"
      }
    },
    "evil-markdown": {
      "flake": false,
      "locked": {
        "lastModified": 1626852210,
        "narHash": "sha256-HBBuZ1VWIn6kwK5CtGIvHM1+9eiNiKPH0GUsyvpUVN8=",
        "owner": "Somelauw",
        "repo": "evil-markdown",
        "rev": "8e6cc68af83914b2fa9fd3a3b8472573dbcef477",
        "type": "github"
      },
      "original": {
        "owner": "Somelauw",
        "repo": "evil-markdown",
        "type": "github"
      }
    },
    "evil-org-mode": {
      "flake": false,
      "locked": {
        "lastModified": 1607203864,
        "narHash": "sha256-JxwqVYDN6OIJEH15MVI6XOZAPtUWUhJQWHyzcrUvrFg=",
        "owner": "hlissner",
        "repo": "evil-org-mode",
        "rev": "a9706da260c45b98601bcd72b1d2c0a24a017700",
        "type": "github"
      },
      "original": {
        "owner": "hlissner",
        "repo": "evil-org-mode",
        "type": "github"
      }
    },
    "evil-quick-diff": {
      "flake": false,
      "locked": {
        "lastModified": 1575189609,
        "narHash": "sha256-oGzl1ayW9rIuq0haoiFS7RZsS8NFMdEA7K1BSozgnJU=",
        "owner": "rgrinberg",
        "repo": "evil-quick-diff",
        "rev": "69c883720b30a892c63bc89f49d4f0e8b8028908",
        "type": "github"
      },
      "original": {
        "owner": "rgrinberg",
        "repo": "evil-quick-diff",
        "type": "github"
      }
    },
    "explain-pause-mode": {
      "flake": false,
      "locked": {
        "lastModified": 1595842060,
        "narHash": "sha256-++znrjiDSx+cy4okFBBXUBkRFdtnE2x+trkmqjB3Njs=",
        "owner": "lastquestion",
        "repo": "explain-pause-mode",
        "rev": "2356c8c3639cbeeb9751744dbe737267849b4b51",
        "type": "github"
      },
      "original": {
        "owner": "lastquestion",
        "repo": "explain-pause-mode",
        "type": "github"
      }
    },
    "flake-compat": {
      "flake": false,
      "locked": {
        "lastModified": 1673956053,
        "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
        "owner": "edolstra",
        "repo": "flake-compat",
        "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
        "type": "github"
      },
      "original": {
        "owner": "edolstra",
        "repo": "flake-compat",
        "type": "github"
      }
    },
    "flake-utils": {
      "inputs": {
        "systems": "systems"
      },
      "locked": {
        "lastModified": 1694529238,
        "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
        "owner": "numtide",
        "repo": "flake-utils",
        "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
        "type": "github"
      },
      "original": {
        "owner": "numtide",
        "repo": "flake-utils",
        "type": "github"
      }
    },
    "flake-utils_2": {
      "locked": {
        "lastModified": 1659877975,
        "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",


@@ 239,23 15,6 @@
        "type": "github"
      }
    },
    "format-all": {
      "flake": false,
      "locked": {
        "lastModified": 1581716637,
        "narHash": "sha256-ul7LCe60W8TIvUmUtZtZRo8489TK9iTPDsLHmzxY57M=",
        "owner": "lassik",
        "repo": "emacs-format-all-the-code",
        "rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
        "type": "github"
      },
      "original": {
        "owner": "lassik",
        "repo": "emacs-format-all-the-code",
        "rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
        "type": "github"
      }
    },
    "home-manager": {
      "inputs": {
        "nixpkgs": [


@@ 277,25 36,9 @@
        "type": "github"
      }
    },
    "nix-straight": {
      "flake": false,
      "locked": {
        "lastModified": 1694361489,
        "narHash": "sha256-kjDp+j6OtrmqbtjQB5uuOtjS08+kgJQuxFqhWE1Y9Rw=",
        "owner": "nix-community",
        "repo": "nix-straight.el",
        "rev": "748be99b84be0b130e946288099806a0f16d6e57",
        "type": "github"
      },
      "original": {
        "owner": "nix-community",
        "repo": "nix-straight.el",
        "type": "github"
      }
    },
    "nixgl": {
      "inputs": {
        "flake-utils": "flake-utils_2",
        "flake-utils": "flake-utils",
        "nixpkgs": [
          "nixpkgs"
        ]


@@ 346,29 89,13 @@
        "type": "github"
      }
    },
    "nose": {
      "flake": false,
      "locked": {
        "lastModified": 1400604510,
        "narHash": "sha256-daEi8Kta1oGaDEmUUDDQMahTTPOpvNpDKk22rlr7cB0=",
        "owner": "emacsattic",
        "repo": "nose",
        "rev": "f8528297519eba911696c4e68fa88892de9a7b72",
        "type": "github"
      },
      "original": {
        "owner": "emacsattic",
        "repo": "nose",
        "type": "github"
      }
    },
    "nur": {
      "locked": {
        "lastModified": 1695369089,
        "narHash": "sha256-3iIl4R7XJbSIXvNEwYpZfIZlZ2DTKc25HtEPh7QagH8=",
        "lastModified": 1695379524,
        "narHash": "sha256-lXG7i/7BHa3hLBHV+KsXGrOEna+zYBJ09wnGa7SlRG8=",
        "owner": "nix-community",
        "repo": "NUR",
        "rev": "8f631f591c83db7e1ad6c4ed8eb737f231bd6994",
        "rev": "580b8e4860d3ef435f7f2c0d25cbbafdb8a831cb",
        "type": "github"
      },
      "original": {


@@ 377,190 104,14 @@
        "type": "github"
      }
    },
    "ob-racket": {
      "flake": false,
      "locked": {
        "lastModified": 1584656173,
        "narHash": "sha256-rBUYDDCXb+3D4xTPQo9UocbTPZ32kWV1Uya/1DmZknU=",
        "owner": "xchrishawk",
        "repo": "ob-racket",
        "rev": "83457ec9e1e96a29fd2086ed19432b9d75787673",
        "type": "github"
      },
      "original": {
        "owner": "xchrishawk",
        "repo": "ob-racket",
        "type": "github"
      }
    },
    "org": {
      "flake": false,
      "locked": {
        "lastModified": 1695208951,
        "narHash": "sha256-GdkBhWg/bIwnQk4/a/Ief+cFtDcUJEMNqiFYO3A5sus=",
        "owner": "emacs-straight",
        "repo": "org-mode",
        "rev": "266aac1186256aaf3fb1bb1181ee83d548092d12",
        "type": "github"
      },
      "original": {
        "owner": "emacs-straight",
        "repo": "org-mode",
        "type": "github"
      }
    },
    "org-contrib": {
      "flake": false,
      "locked": {
        "lastModified": 1694946041,
        "narHash": "sha256-X/HFG6NZe5BY00KvGbcsIuf9R6Lg8x7Uhd0Y5+Q3qZU=",
        "owner": "emacsmirror",
        "repo": "org-contrib",
        "rev": "5eabbf22bdd4523c922a30787e98ee66c24221aa",
        "type": "github"
      },
      "original": {
        "owner": "emacsmirror",
        "repo": "org-contrib",
        "type": "github"
      }
    },
    "org-yt": {
      "flake": false,
      "locked": {
        "lastModified": 1527381913,
        "narHash": "sha256-dzQ6B7ryzatHCTLyEnRSbWO0VUiX/FHYnpHTs74aVUs=",
        "owner": "TobiasZawada",
        "repo": "org-yt",
        "rev": "40cc1ac76d741055cbefa13860d9f070a7ade001",
        "type": "github"
      },
      "original": {
        "owner": "TobiasZawada",
        "repo": "org-yt",
        "type": "github"
      }
    },
    "php-extras": {
      "flake": false,
      "locked": {
        "lastModified": 1573312690,
        "narHash": "sha256-r4WyVbzvT0ra4Z6JywNBOw5RxOEYd6Qe2IpebHXkj1U=",
        "owner": "arnested",
        "repo": "php-extras",
        "rev": "d410c5af663c30c01d461ac476d1cbfbacb49367",
        "type": "github"
      },
      "original": {
        "owner": "arnested",
        "repo": "php-extras",
        "type": "github"
      }
    },
    "revealjs": {
      "flake": false,
      "locked": {
        "lastModified": 1695108593,
        "narHash": "sha256-1Rb3w4Mpzv81pw7FaZHdQULK6+9oZIzeQ6uCD4PvjJM=",
        "owner": "hakimel",
        "repo": "reveal.js",
        "rev": "db2523db277bea632c218a7d836f27079a1be7f9",
        "type": "github"
      },
      "original": {
        "owner": "hakimel",
        "repo": "reveal.js",
        "type": "github"
      }
    },
    "root": {
      "inputs": {
        "doom-emacs": "doom-emacs",
        "home-manager": "home-manager",
        "nixgl": "nixgl",
        "nixpkgs": "nixpkgs",
        "nixpkgs-unstable": "nixpkgs-unstable",
        "nur": "nur"
      }
    },
    "rotate-text": {
      "flake": false,
      "locked": {
        "lastModified": 1322962747,
        "narHash": "sha256-SOeOgSlcEIsKhUiYDJv0p+mLUb420s9E2BmvZQvZ0wk=",
        "owner": "debug-ito",
        "repo": "rotate-text.el",
        "rev": "48f193697db996855aee1ad2bc99b38c6646fe76",
        "type": "github"
      },
      "original": {
        "owner": "debug-ito",
        "repo": "rotate-text.el",
        "type": "github"
      }
    },
    "sln-mode": {
      "flake": false,
      "locked": {
        "lastModified": 1423727528,
        "narHash": "sha256-XqkqPyEJuTtFslOz1fpTf/Klbd/zA7IGpzpmum/MGao=",
        "owner": "sensorflo",
        "repo": "sln-mode",
        "rev": "0f91d1b957c7d2a7bab9278ec57b54d57f1dbd9c",
        "type": "github"
      },
      "original": {
        "owner": "sensorflo",
        "repo": "sln-mode",
        "type": "github"
      }
    },
    "systems": {
      "locked": {
        "lastModified": 1681028828,
        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
        "owner": "nix-systems",
        "repo": "default",
        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
        "type": "github"
      },
      "original": {
        "owner": "nix-systems",
        "repo": "default",
        "type": "github"
      }
    },
    "ts-fold": {
      "flake": false,
      "locked": {
        "lastModified": 1695278494,
        "narHash": "sha256-O4NcUC1u08W8ZslqoA/i+iTaLotKwheURXQWBxLLMFc=",
        "owner": "jcs-elpa",
        "repo": "ts-fold",
        "rev": "70b2c79ff4daa7351d4e2917b0343b9a18d4d4f2",
        "type": "github"
      },
      "original": {
        "owner": "jcs-elpa",
        "repo": "ts-fold",
        "type": "github"
      }
    },
    "ws-butler": {
      "flake": false,
      "locked": {
        "lastModified": 1634511126,
        "narHash": "sha256-c0y0ZPtxxICPk+eaNbbQf6t+FRCliNY54CCz9QHQ8ZI=",
        "owner": "hlissner",
        "repo": "ws-butler",
        "rev": "572a10c11b6cb88293de48acbb59a059d36f9ba5",
        "type": "github"
      },
      "original": {
        "owner": "hlissner",
        "repo": "ws-butler",
        "type": "github"
      }
    }
  },
  "root": "root",

M flake.nix => flake.nix +2 -7
@@ 27,14 27,9 @@
        url = "github:guibou/nixGL";
        inputs.nixpkgs.follows = "nixpkgs";
      };

      doom-emacs = {
        url = "github:nix-community/nix-doom-emacs";
        inputs.nixpkgs.follows = "nixpkgs";
      };
    };

  outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, home-manager, doom-emacs, nur, nixgl, ... }:   # Function that tells my flake which to use and what do what to do with the dependencies.
  outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, home-manager, nur, nixgl, ... }:   # Function that tells my flake which to use and what do what to do with the dependencies.
    let                                                                     # Variables that can be used in the config files.
      user = "ruther";
      location = "$HOME/.setup";


@@ 43,7 38,7 @@
      nixosConfigurations = (                                               # NixOS configurations
        import ./hosts {                                                    # Imports ./hosts/default.nix
          inherit (nixpkgs) lib;
          inherit inputs nixpkgs nixpkgs-unstable home-manager nur user location doom-emacs;   # Also inherit home-manager so it does not need to be defined here.
          inherit inputs nixpkgs nixpkgs-unstable home-manager nur user location;   # Also inherit home-manager so it does not need to be defined here.
        }
      );


M hosts/configuration.nix => hosts/configuration.nix +6 -54
@@ 21,14 21,14 @@
    extraGroups = [ "wheel" "video" "audio" "camera" "networkmanager" "lp" "scanner" "kvm" "libvirtd" "plex" ];
    shell = pkgs.zsh;                       # Default shell
  };
  security.sudo.wheelNeedsPassword = false; # User does not need to give password when using sudo.
  security.sudo.wheelNeedsPassword = true;

  time.timeZone = "Europe/Brussels";        # Time zone and internationalisation
  time.timeZone = "Europe/Prague";        # Time zone and internationalisation
  i18n = {
    defaultLocale = "en_US.UTF-8";
    extraLocaleSettings = {                 # Extra locale settings that need to be overwritten
      LC_TIME = "nl_BE.UTF-8";
      LC_MONETARY = "nl_BE.UTF-8";
      LC_TIME = "cs_CZ.UTF-8";
      LC_MONETARY = "cs_CZ.UTF-8";
    };
  };



@@ 75,32 75,8 @@
    ];
  };

  programs = {
    thunar = {
      enable = true;
      plugins = with pkgs.xfce; [
        thunar-archive-plugin
        thunar-volman
        thunar-media-tags-plugin
      ];
    };
  };

  services = {
    tumbler.enable = true;
    printing = {                                # Printing and drivers for TS5300
      enable = true;
      #drivers = [ pkgs.cnijfilter2 ];          # There is the possibility cups will complain about missing cmdtocanonij3. I guess this is just an error that can be ignored for now. Also no longer need required since server uses ipp to share printer over network.
    };
    avahi = {                                   # Needed to find wireless printer
      enable = true;
      nssmdns = true;
      publish = {                               # Needed for detecting the scanner
        enable = true;
        addresses = true;
        userServices = true;
      };
    };
    pipewire = {                            # Sound
      enable = true;
      alsa = {


@@ 110,34 86,10 @@
      pulse.enable = true;
      jack.enable = true;
    };
    openssh = {                             # SSH: secure shell (remote connection to shell of server)
      enable = true;                        # local: $ ssh <user>@<ip>
                                            # public:
                                            #   - port forward 22 TCP to server
                                            #   - in case you want to use the domain name insted of the ip:
                                            #       - for me, via cloudflare, create an A record with name "ssh" to the correct ip without proxy
                                            #   - connect via ssh <user>@<ip or ssh.domain>
                                            # generating a key:
                                            #   - $ ssh-keygen   |  ssh-copy-id <ip/domain>  |  ssh-add
                                            #   - if ssh-add does not work: $ eval `ssh-agent -s`
      allowSFTP = true;                     # SFTP: secure file transfer protocol (send file to server)
                                            # connect: $ sftp <user>@<ip/domain>
                                            #   or with file browser: sftp://<ip address>
                                            # commands:
                                            #   - lpwd & pwd = print (local) parent working directory
                                            #   - put/get <filename> = send or receive file
      extraConfig = ''
        HostKeyAlgorithms +ssh-rsa
      '';                                   # Temporary extra config so ssh will work in guacamole
    };
    flatpak.enable = true;                  # download flatpak file from website - sudo flatpak install <path> - reboot if not showing up
                                            # sudo flatpak uninstall --delete-data <app-id> (> flatpak list --app) - flatpak uninstall --unused
                                            # List:
                                            # com.obsproject.Studio
                                            # com.parsecgaming.parsec
                                            # com.usebottles.bottles
  };

  systemd.services."home-manager-${user}".serviceConfig.TimeoutStartSec = lib.mkForce "10m";

  nix = {                                   # Nix Package Manager settings
    settings ={
      auto-optimise-store = true;           # Optimise syslinks

M hosts/default.nix => hosts/default.nix +6 -7
@@ 11,7 11,7 @@
#            └─ ./home.nix 
#

{ lib, inputs, nixpkgs, nixpkgs-unstable, home-manager, doom-emacs, nur, user, location, ... }:
{ lib, inputs, nixpkgs, nixpkgs-unstable, home-manager, nur, user, location, ... }:

let
  system = "x86_64-linux";                                  # System architecture


@@ 46,14 46,14 @@ in
        home-manager.useGlobalPkgs = true;
        home-manager.useUserPackages = true;
        home-manager.extraSpecialArgs = {
          inherit unstable user;
          inherit unstable user location;
          host = {
            hostName = "laptop";
            mainMonitor = "eDP-1";
          };
        };
        home-manager.users.${user} = {
          imports = [doom-emacs.hmModule] ++ [(import ./home.nix)] ++ [(import ./laptop/home.nix)];
          imports = [(import ./home.nix)] ++ [(import ./laptop/home.nix)];
        };
      }
    ];


@@ 77,7 77,7 @@ in
        home-manager.useGlobalPkgs = true;
        home-manager.useUserPackages = true;
        home-manager.extraSpecialArgs = {
          inherit unstable user;
          inherit unstable user location;
          host = {
            hostName = "vm";
            mainMonitor = "Virtual-1";


@@ 85,7 85,7 @@ in
          };
        };
        home-manager.users.${user} = {
          imports = [doom-emacs.hmModule] ++ [(import ./home.nix)] ++ [(import ./vm/home.nix)];
          imports = [(import ./home.nix)] ++ [(import ./vm/home.nix)];
        };
      }
    ];


@@ 110,7 110,7 @@ in
        home-manager.useGlobalPkgs = true;
        home-manager.useUserPackages = true;
        home-manager.extraSpecialArgs = {
          inherit unstable user;
          inherit unstable user location;
          host = {
            hostName = "desktop";       #For Xorg iGPU  | Hyprland iGPU
            mainMonitor = "HDMI-A-1";   #HDMIA3         | HDMI-A-3


@@ 119,7 119,6 @@ in
        };                                                  # Pass flake variable
        home-manager.users.${user} = {
          imports = [
            doom-emacs.hmModule
            ./home.nix
            ./desktop/home.nix
          ];

M hosts/home.nix => hosts/home.nix +1 -1
@@ 11,7 11,7 @@
#           └─ default.nix
#

{ config, lib, pkgs, unstable, user, ... }:
{ config, lib, pkgs, unstable, user, location, ... }:

{ 
  imports =                                   # Home Manager Modules

M modules/editors/emacs/doom.d/packages.el => modules/editors/emacs/doom.d/packages.el +1 -1
@@ 52,7 52,7 @@
(package! arm-mode :recipe (:host github :repo "charje/arm-mode"))
(package! dumb-jump)
(package! imenu-list)
(package! combobulate)
;(package! combobulate)
(package! vhdl-ext
  :recipe (:host github :repo "gmlarumbe/vhdl-ext"
                 :files (:defaults "snippets" "ts-mode/*.el")))

M modules/editors/emacs/home.nix => modules/editors/emacs/home.nix +49 -12
@@ 11,23 11,60 @@
#


{ config, user, unstable, pkgs, doom-emacs, location, ... }:
{ config, user, unstable, pkgs, inputs, location, ... }:

let
  emacs-with-packages = ((pkgs.emacsPackagesFor pkgs.emacs29).emacsWithPackages (epkgs: [
      epkgs.vterm
      epkgs.sqlite
      epkgs.treesit-grammars.with-all-grammars
    ]));
in {
{
  services.emacs = {
    enable = true;
    package = emacs-with-packages;
    client = {
      enable = true;
    };
    startWithUserSession = "graphical";
  };

  programs.doom-emacs = {
  programs.emacs = {
    enable = true;
    doomPrivateDir = ./doom.d;
    emacsPackage = emacs-with-packages;
    package = pkgs.emacs29-gtk3;
    extraPackages = epkgs: [
      epkgs.vterm
      epkgs.sqlite
      epkgs.treesit-grammars.with-all-grammars
    ];
  };

  home.activation = {
    installDoomEmacs = {
      after = [ "writeBoundary" "createXdgUserDirectories" ];
      before = [ ];
      data = ''
        EMACS="$HOME/.emacs.d"

        if [ ! -d "$EMACS" ]; then
          ${pkgs.git}/bin/git clone https://github.com/hlissner/doom-emacs.git $EMACS

          bash -c "yes || true" | $EMACS/bin/doom install

          rm -rf $HOME/.doom.d
          ln -s ${location}/modules/editors/emacs/doom.d $HOME/.doom.d
          bash -c "yes || true" | $EMACS/bin/doom sync
        else
          bash -c "yes || true" | $EMACS/bin/doom sync
        fi'';
    };
  };

  home.packages = with pkgs; [
    emacs-all-the-icons-fonts
    #binutils # for native comp

    ## Doom emacs dependencies
    gnutls
    fd
    ripgrep

    ## Optional dependencies
    fd
    imagemagick
    #zstd
  ];
}

Do not follow this link