Personal-use NixOS configuration

Create career user for work-life balance

+251 -47
+13
homes/career/common/default.nix
··· 1 + { homeCommon }: 2 + 3 + { 4 + imports = [ 5 + (homeCommon + /fish.nix) 6 + 7 + ./functions.nix 8 + 9 + (homeCommon + /bat.nix) 10 + ../../shared/common/eza.nix 11 + ../../shared/common/xh.nix 12 + ]; 13 + }
+42
homes/career/common/functions.nix
··· 1 + { pkgs, lib, ... }: 2 + 3 + let 4 + scpFlags = [ 5 + "-P 2222" 6 + ]; 7 + 8 + scpOptions = [ 9 + "PubkeyAuthentication=no" 10 + "StrictHostKeyChecking=accept-new" 11 + ]; 12 + 13 + scpDefaults = lib.concatStringsSep " " (scpFlags ++ map (opt: "-o ${opt}") scpOptions); 14 + in 15 + { 16 + programs.fish.functions = { 17 + server_upload = '' 18 + set host (string replace :2222 "" $argv[1]) 19 + set username $argv[2] 20 + set filename $argv[3] 21 + 22 + mscp $filename ${scpDefaults} $username@$host:/ 23 + ''; 24 + 25 + server_download = '' 26 + set host (string replace :2222 "" $argv[1]) 27 + set username $argv[2] 28 + 29 + set path $argv[3] 30 + set filename (path basename $path) 31 + set directory server-$username 32 + 33 + mkdir -p ~/Downloads/$directory 34 + 35 + mscp ${scpDefaults} $username@$host:/$path ~/Downloads/$directory/$filename 36 + ''; 37 + }; 38 + 39 + home.packages = with pkgs; [ 40 + mscp 41 + ]; 42 + }
+15
homes/career/desktop/default.nix
··· 1 + { homeDesktop }: 2 + 3 + { flakeRoot, ... }: 4 + 5 + { 6 + imports = [ 7 + (import ./environments/gnome.nix { inherit homeDesktop; }) 8 + 9 + (import ./firefox.nix { inherit homeDesktop; }) 10 + 11 + (flakeRoot + /homes/shared/desktop/prismlauncher.nix) 12 + 13 + ./packages.nix 14 + ]; 15 + }
+26
homes/career/desktop/environments/gnome.nix
··· 1 + { homeDesktop }: 2 + 3 + { pkgs, lib, ... }: 4 + 5 + { 6 + imports = [ 7 + (homeDesktop + /environments/gnome.nix) 8 + ]; 9 + 10 + dconf = { 11 + settings = { 12 + "org/gnome/desktop/interface" = { 13 + accent-color = lib.mkForce "green"; 14 + }; 15 + }; 16 + }; 17 + 18 + xdg.autostart = { 19 + enable = true; 20 + 21 + entries = [ 22 + "${pkgs.firefox}/share/applications/firefox.desktop" 23 + "${pkgs.slack}/share/applications/slack.desktop" 24 + ]; 25 + }; 26 + }
+18
homes/career/desktop/firefox.nix
··· 1 + { homeDesktop }: 2 + 3 + { lib, ... }: 4 + 5 + { 6 + imports = [ 7 + (homeDesktop + /firefox.nix) 8 + ]; 9 + 10 + programs.firefox = { 11 + profiles.default = { 12 + settings = { 13 + "browser.startup.page" = lib.mkForce 1; 14 + "browser.startup.homepage" = "https://app.gusto.com|https://app.intercom.com"; 15 + }; 16 + }; 17 + }; 18 + }
+7
homes/career/desktop/packages.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + slack 6 + ]; 7 + }
+2
homes/encode42/desktop/firefox.nix
··· 39 39 fastforwardteam 40 40 indie-wiki-buddy 41 41 ]; 42 + 43 + force = true; 42 44 }; 43 45 44 46 search = {
-17
homes/encode42/desktop/work.nix
··· 1 - { pkgs, ... }: 2 - 3 - { 4 - programs.fish.functions = { 5 - server_upload = '' 6 - set host (string replace :2222 "" $argv[1]) 7 - set username $argv[2] 8 - set filename $argv[3] 9 - 10 - mscp $filename -o PubkeyAuthentication=no -P 2222 $username@$host:/ 11 - ''; 12 - }; 13 - 14 - home.packages = with pkgs; [ 15 - mscp 16 - ]; 17 - }
-3
hosts/decryption/homes/encode42.nix
··· 18 18 (flakeRoot + /homes/encode42/desktop/environments/gnome.nix) 19 19 20 20 (flakeRoot + /homes/encode42/desktop/jetbrains/intellij.nix) 21 - 22 21 (flakeRoot + /homes/encode42/desktop/discord.nix) 23 22 (flakeRoot + /homes/encode42/desktop/firefox.nix) 24 23 25 24 (flakeRoot + /homes/shared/desktop/prismlauncher.nix) 26 - 27 - (flakeRoot + /homes/encode42/desktop/work.nix) 28 25 ]; 29 26 30 27 home.packages = with pkgs; [
+12
hosts/decryption/users/career.nix
··· 1 + { 2 + lib, 3 + flakeRoot, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + (flakeRoot + /users/career) 11 + ]; 12 + }
+1
hosts/decryption/users/default.nix
··· 4 4 imports = [ 5 5 (flakeRoot + /modules/desktop/home-manager.nix) 6 6 7 + ./career.nix 7 8 ./encode42.nix 8 9 ]; 9 10 }
-5
hosts/encryption/homes/encode42.nix
··· 23 23 (flakeRoot + /homes/encode42/desktop/jetbrains/intellij.nix) 24 24 (flakeRoot + /homes/encode42/desktop/jetbrains/rustrover.nix) 25 25 (flakeRoot + /homes/encode42/desktop/jetbrains/webstorm.nix) 26 - 27 26 (flakeRoot + /homes/encode42/desktop/discord.nix) 28 27 (flakeRoot + /homes/encode42/desktop/firefox.nix) 29 28 30 29 (flakeRoot + /homes/shared/desktop/prismlauncher.nix) 31 - 32 - (flakeRoot + /homes/encode42/desktop/work.nix) 33 30 ]; 34 31 35 32 home.packages = with pkgs; [ ··· 44 41 openrct2 45 42 r2modman 46 43 pkgs-unstable.olympus 47 - 48 - slack 49 44 ]; 50 45 }
+12
hosts/encryption/users/career.nix
··· 1 + { 2 + lib, 3 + flakeRoot, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + (flakeRoot + /users/career) 11 + ]; 12 + }
+1
hosts/encryption/users/default.nix
··· 4 4 imports = [ 5 5 (flakeRoot + /modules/desktop/home-manager.nix) 6 6 7 + ./career.nix 7 8 ./encode42.nix 8 9 ]; 9 10 }
+1
lib/default.nix
··· 6 6 }; 7 7 8 8 mkProxies = import ./mkProxies.nix; 9 + mkUserIcon = import ./mkUserIcon.nix; 9 10 }
+30
lib/mkUserIcon.nix
··· 1 + { userName, userIcon }: 2 + 3 + let 4 + userFile = '' 5 + [User] 6 + Icon=/var/lib/AccountsService/icons/${userName} 7 + ''; 8 + in 9 + { 10 + systemd.tmpfiles.rules = [ 11 + "d /var/lib/AccountsService/users 0755 root root -" 12 + "d /var/lib/AccountsService/icons 0755 root root -" 13 + "f /var/lib/AccountsService/users/${userName} 0644 root root -" 14 + "f /var/lib/AccountsService/icons/${userName} 0644 root root -" 15 + ]; 16 + 17 + system.activationScripts = builtins.listToAttrs [ 18 + { 19 + name = "copy-profile-picture-${userName}"; 20 + 21 + value.text = '' 22 + cp ${userIcon} /var/lib/AccountsService/icons/${userName} 23 + echo "${userFile}" > /var/lib/AccountsService/users/${userName} 24 + 25 + chown root:root /var/lib/AccountsService/{icons,users}/${userName} 26 + chmod 0644 /var/lib/AccountsService/{icons,users}/${userName} 27 + ''; 28 + } 29 + ]; 30 + }
+13
users/career/common/default.nix
··· 1 + { 2 + flakeRoot, 3 + pkgs, 4 + ... 5 + }: 6 + 7 + { 8 + imports = [ 9 + ./user.nix 10 + 11 + (flakeRoot + /packages/common/fish.nix) 12 + ]; 13 + }
+9
users/career/common/user.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + users.users.career = { 5 + isNormalUser = true; 6 + 7 + shell = pkgs.fish; 8 + }; 9 + }
+33
users/career/default.nix
··· 1 + # This user is single-purpose, meaning it will only ever be used in one environment. 2 + # As such, a default file has been specified which pulls from any system-side necessary. 3 + 4 + { flakeRoot, ... }: 5 + 6 + let 7 + personalHomeRoot = flakeRoot + /homes/encode42; 8 + careerHomeRoot = flakeRoot + /homes/career; 9 + 10 + commonModule = import (careerHomeRoot + /common) { 11 + homeCommon = personalHomeRoot + /common; 12 + }; 13 + 14 + desktopModule = import (careerHomeRoot + /desktop) { 15 + homeDesktop = personalHomeRoot + /desktop; 16 + }; 17 + in 18 + { 19 + imports = [ 20 + ./common 21 + 22 + ./desktop/environments/gnome.nix 23 + ]; 24 + 25 + home-manager.users.career = { 26 + imports = [ 27 + commonModule 28 + desktopModule 29 + ]; 30 + 31 + home.stateVersion = "24.05"; 32 + }; 33 + }
+10
users/career/desktop/environments/gnome.nix
··· 1 + { flakeLib, ... }: 2 + 3 + { 4 + imports = [ 5 + (flakeLib.mkUserIcon { 6 + userName = "career"; 7 + userIcon = ../modrinth.png; 8 + }) 9 + ]; 10 + }
users/career/desktop/modrinth.png

This is a binary file and will not be displayed.

+6 -22
users/encode42/desktop/environments/gnome.nix
··· 1 - { flakeRoot, ... }: 1 + { flakeLib, ... }: 2 2 3 - let 4 - userIcon = flakeRoot + /users/encode42/desktop/42.svg; 5 - 6 - userFile = '' 7 - [User] 8 - Icon=/var/lib/AccountsService/icons/encode42 9 - ''; 10 - in 11 3 { 12 - systemd.tmpfiles.rules = [ 13 - "d /var/lib/AccountsService/users 0755 root root -" 14 - "d /var/lib/AccountsService/icons 0755 root root -" 15 - "f /var/lib/AccountsService/users/encode42 0644 root root -" 16 - "f /var/lib/AccountsService/icons/encode42 0644 root root -" 4 + imports = [ 5 + (flakeLib.mkUserIcon { 6 + userName = "encode42"; 7 + userIcon = ../42.svg; 8 + }) 17 9 ]; 18 - 19 - system.activationScripts.copy-profile-picture-encode42 = '' 20 - cp ${userIcon} /var/lib/AccountsService/icons/encode42 21 - echo "${userFile}" > /var/lib/AccountsService/users/encode42 22 - 23 - chown root:root /var/lib/AccountsService/{icons,users}/encode42 24 - chmod 0644 /var/lib/AccountsService/{icons,users}/encode42 25 - ''; 26 10 }