fix(system): properly configure jupyter #110
3 changed files with 149 additions and 124 deletions
|
@ -1,46 +1,55 @@
|
||||||
{ inputs, lib, ... }:
|
{ inputs, lib, ... }:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
overlays = builtins.attrValues inputs.self.overlays;
|
||||||
|
config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam-original" ];
|
||||||
|
pkgs = import inputs.nixpkgs { inherit system overlays config; };
|
||||||
|
in
|
||||||
{
|
{
|
||||||
# Example vm configuration
|
# Example vm configuration
|
||||||
flake.nixosConfigurations.vm =
|
flake.nixosConfigurations.vm = lib.nixosSystem {
|
||||||
let
|
inherit system pkgs;
|
||||||
system = "x86_64-linux";
|
modules = [
|
||||||
overlays = builtins.attrValues inputs.self.overlays;
|
inputs.self.nixosModules.vm # import vm module
|
||||||
config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam-original" ];
|
{
|
||||||
pkgs = import inputs.nixpkgs { inherit system overlays config; };
|
time.timeZone = "Europe/Berlin";
|
||||||
in
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
lib.nixosSystem {
|
users.users.jdoe = {
|
||||||
inherit system pkgs;
|
password = "example";
|
||||||
modules = [
|
isNormalUser = true;
|
||||||
inputs.self.nixosModules.vm # import vm module
|
extraGroups = [
|
||||||
{
|
"wheel"
|
||||||
time.timeZone = "Europe/Berlin";
|
"video"
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
"networkmanager"
|
||||||
users.users.jdoe = {
|
];
|
||||||
password = "example";
|
};
|
||||||
isNormalUser = true;
|
home-manager.users.jdoe = {
|
||||||
extraGroups = [
|
home = {
|
||||||
"wheel"
|
username = "jdoe";
|
||||||
"video"
|
homeDirectory = "/home/jdoe";
|
||||||
"networkmanager"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
home-manager.users.jdoe = {
|
jhome = {
|
||||||
home = {
|
|
||||||
username = "jdoe";
|
|
||||||
homeDirectory = "/home/jdoe";
|
|
||||||
};
|
|
||||||
jhome = {
|
|
||||||
enable = true;
|
|
||||||
gui.enable = true;
|
|
||||||
dev.rust.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
nix.registry.nixpkgs.flake = inputs.nixpkgs;
|
|
||||||
jconfig = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
gui.enable = true;
|
gui.enable = true;
|
||||||
|
dev = {
|
||||||
|
enable = true;
|
||||||
|
rust.enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
];
|
nix.registry.nixpkgs.flake = inputs.nixpkgs;
|
||||||
};
|
# password is 'test' see module documentation for more options
|
||||||
|
services.jupyter.password = "'sha1:1b961dc713fb:88483270a63e57d18d43cf337e629539de1436ba'";
|
||||||
|
jconfig = {
|
||||||
|
enable = true;
|
||||||
|
dev = {
|
||||||
|
enable = true;
|
||||||
|
jupyter.enable = true;
|
||||||
|
};
|
||||||
|
gui.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,92 +26,105 @@ in
|
||||||
{ stylix = import ./stylix-config.nix { inherit config pkgs; }; }
|
{ stylix = import ./stylix-config.nix { inherit config pkgs; }; }
|
||||||
];
|
];
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable (
|
||||||
boot.plymouth.enable = cfg.styling.enable;
|
lib.mkMerge [
|
||||||
|
{
|
||||||
# Enable unlocking the gpg-agent at boot (configured through home.nix)
|
boot.plymouth = {
|
||||||
security.pam.services.login.gnupg.enable = true;
|
inherit (cfg.styling) enable;
|
||||||
|
|
||||||
environment.systemPackages = [
|
|
||||||
# CLI tools
|
|
||||||
pkgs.fd
|
|
||||||
pkgs.bat
|
|
||||||
pkgs.skim
|
|
||||||
pkgs.ripgrep
|
|
||||||
pkgs.du-dust
|
|
||||||
pkgs.curl
|
|
||||||
pkgs.wget
|
|
||||||
pkgs.eza
|
|
||||||
pkgs.zip
|
|
||||||
pkgs.unzip
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enable dev documentation
|
|
||||||
documentation.dev.enable = cfg.dev.enable;
|
|
||||||
programs = {
|
|
||||||
# Shell prompt
|
|
||||||
starship = {
|
|
||||||
enable = true;
|
|
||||||
settings = lib.mkIf cfg.styling.enable {
|
|
||||||
format = "$time$all";
|
|
||||||
add_newline = false;
|
|
||||||
cmd_duration.min_time = 500;
|
|
||||||
cmd_duration.show_milliseconds = true;
|
|
||||||
time = {
|
|
||||||
format = "[$time](bold yellow) ";
|
|
||||||
disabled = false;
|
|
||||||
};
|
|
||||||
status = {
|
|
||||||
format = "[$signal_name$common_meaning$maybe_int](red)";
|
|
||||||
symbol = "[✗](bold red)";
|
|
||||||
disabled = false;
|
|
||||||
};
|
|
||||||
sudo.disabled = false;
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
# Default shell
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.etc = keysFromGithub;
|
# Enable unlocking the gpg-agent at boot (configured through home.nix)
|
||||||
services = {
|
security.pam.services.login.gnupg.enable = true;
|
||||||
# Enable printer autodiscovery if printing is enabled
|
|
||||||
avahi = {
|
environment.systemPackages = [
|
||||||
inherit (config.services.printing) enable;
|
# CLI tools
|
||||||
nssmdns4 = true;
|
pkgs.fd
|
||||||
openFirewall = true;
|
pkgs.bat
|
||||||
};
|
pkgs.skim
|
||||||
openssh.authorizedKeysFiles = builtins.map (path: "/etc/${path}") (
|
pkgs.ripgrep
|
||||||
builtins.attrNames keysFromGithub
|
pkgs.du-dust
|
||||||
);
|
pkgs.curl
|
||||||
jupyter = {
|
pkgs.wget
|
||||||
inherit (cfg.dev) enable;
|
pkgs.eza
|
||||||
group = "users";
|
pkgs.zip
|
||||||
};
|
pkgs.unzip
|
||||||
};
|
|
||||||
users.defaultUserShell = pkgs.zsh;
|
|
||||||
# Open ports for spotifyd
|
|
||||||
networking.firewall = {
|
|
||||||
allowedUDPPorts = [ 5353 ];
|
|
||||||
allowedTCPPorts = [ 2020 ];
|
|
||||||
};
|
|
||||||
# Nix Settings
|
|
||||||
nix = {
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
options = "--delete-older-than 30d";
|
|
||||||
# run between 0 and 45min after boot if run was missed
|
|
||||||
randomizedDelaySec = "45min";
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
use-xdg-base-directories = true;
|
|
||||||
auto-optimise-store = true;
|
|
||||||
experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
];
|
||||||
};
|
|
||||||
};
|
# Enable dev documentation
|
||||||
};
|
documentation.dev = {
|
||||||
|
inherit (cfg.dev) enable;
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
# Shell prompt
|
||||||
|
starship = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
format = "$time$all";
|
||||||
|
add_newline = false;
|
||||||
|
cmd_duration.min_time = 500;
|
||||||
|
cmd_duration.show_milliseconds = true;
|
||||||
|
time = {
|
||||||
|
format = "[$time](bold yellow) ";
|
||||||
|
disabled = false;
|
||||||
|
};
|
||||||
|
status = {
|
||||||
|
format = "[$signal_name$common_meaning$maybe_int](red)";
|
||||||
|
symbol = "[✗](bold red)";
|
||||||
|
disabled = false;
|
||||||
|
};
|
||||||
|
sudo.disabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# Default shell
|
||||||
|
zsh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc = keysFromGithub;
|
||||||
|
services = {
|
||||||
|
# Enable printer autodiscovery if printing is enabled
|
||||||
|
avahi = {
|
||||||
|
inherit (config.services.printing) enable;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
openssh.authorizedKeysFiles = builtins.map (path: "/etc/${path}") (
|
||||||
|
builtins.attrNames keysFromGithub
|
||||||
|
);
|
||||||
|
};
|
||||||
|
users.defaultUserShell = pkgs.zsh;
|
||||||
|
# Open ports for spotifyd
|
||||||
|
networking.firewall = {
|
||||||
|
allowedUDPPorts = [ 5353 ];
|
||||||
|
allowedTCPPorts = [ 2020 ];
|
||||||
|
};
|
||||||
|
# Nix Settings
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 30d";
|
||||||
|
# run between 0 and 45min after boot if run was missed
|
||||||
|
randomizedDelaySec = "45min";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
use-xdg-base-directories = true;
|
||||||
|
auto-optimise-store = true;
|
||||||
|
experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
# dev configuration
|
||||||
|
(lib.mkIf cfg.dev.enable {
|
||||||
|
users.extraUsers = lib.mkIf cfg.dev.jupyter.enable { jupyter.group = "jupyter"; };
|
||||||
|
services.jupyter = {
|
||||||
|
inherit (cfg.dev.jupyter) enable;
|
||||||
|
group = "jupyter";
|
||||||
|
user = "jupyter";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,10 @@ let
|
||||||
dev = lib.mkOption {
|
dev = lib.mkOption {
|
||||||
description = "Options for setting up a dev environment";
|
description = "Options for setting up a dev environment";
|
||||||
default = { };
|
default = { };
|
||||||
type = types.submodule { options.enable = lib.mkEnableOption "dev configuration"; };
|
type = types.submodule {
|
||||||
|
options.enable = lib.mkEnableOption "dev configuration";
|
||||||
|
options.jupyter.enable = lib.mkEnableOption "jupyter configuration";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
gui = lib.mkOption {
|
gui = lib.mkOption {
|
||||||
description = "Jalil's default configuration for a NixOS gui.";
|
description = "Jalil's default configuration for a NixOS gui.";
|
||||||
|
|
Loading…
Reference in a new issue