switch to flake based config

This commit is contained in:
Rachel Lambda Samuelsson 2023-07-31 14:18:02 +02:00
parent 3e366daa1f
commit a123f87b22
6 changed files with 284 additions and 190 deletions

49
flake.lock Normal file
View File

@ -0,0 +1,49 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1687871164,
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-23.05",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1690630041,
"narHash": "sha256-gbnvqm5goS9DSKAqGFpq3398aOpwejmq4qWikqmQyRo=",
"owner": "NixOs",
"repo": "nixpkgs",
"rev": "d57e8c535d4cbb07f441c30988ce52eec69db7a8",
"type": "github"
},
"original": {
"owner": "NixOs",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

32
flake.nix Normal file
View File

@ -0,0 +1,32 @@
rec {
description = "My various NixOs configurations";
inputs = {
nixpkgs.url = "github:NixOs/nixpkgs/nixos-23.05";
home-manager.url = "github:nix-community/home-manager/release-23.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, home-manager }: {
nixosConfigurations.lambda = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
{
nix.registry.nixpkgs.flake = nixpkgs;
system.configurationRevision = nixpkgs.lib.mkIf (self ? rev) self.rev;
}
./lambda/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users.rachel = import ./home/rachel.nix;
};
}
];
};
};
}

188
home/rachel.nix Normal file
View File

@ -0,0 +1,188 @@
{ pkgs, ... }:
let username = "rachel";
homeDir = "/home/${username}";
SAX2 = pkgs.fetchurl {
name = "SAX2";
url = "https://abrudz.github.io/SAX2/SAX2.ttf";
sha256 = "sha256-DgvDWXO2fnKZNu9EvQOq8GNMTU3PUdp85+/0ZHdRXZc=";
recursiveHash = true;
downloadToTemp = true;
postFetch = ''
mkdir -p "$out/share/fonts/truetype"
mv "$downloadedFile" "$out/share/fonts/truetype/SAX2.ttf"
'';
};
in
{
home = {
username = username;
homeDirectory = homeDir;
packages = with pkgs; [
neofetch
pfetch
unzip
zip
xz
gzip
bzip2
p7zip
usbutils
pciutils
nettools
nmap
arp-scan
acpi
julia
python3
ghc
firefox
sxiv
zathura
gnupg
agda
rofi
discord
pinentry_qt
dig
xxd
mpv
zoom-us
slack
imagemagick
ffmpeg
sl
cowsay
lolcat
fortune
banner
yt-dlp
libreoffice
protonmail-bridge
pass
protonvpn-cli
protonvpn-gui
thunderbird
tidal-hifi
signal-desktop
transmission-gtk
xclip
clinfo
glxinfo
vulkan-tools
obs-studio
file
gimp
SAX2
twemoji-color-font
bat
steam
steam-run
];
stateVersion = "23.05";
};
xdg.userDirs = {
enable = true;
createDirectories = true;
desktop = "${homeDir}";
documents = "${homeDir}/doc";
download = "${homeDir}/dwn";
music = "${homeDir}/music";
pictures = "${homeDir}/img";
publicShare = "${homeDir}/srv";
templates = "${homeDir}/doc/templates";
videos = "${homeDir}/vid";
};
programs = {
bash = {
enable = true;
enableCompletion = true;
historyFile = "/dev/null";
sessionVariables = {
PS1 ="\\033[1m\\u\\033[0m@\\033[1m\\h\\033[0m: \\w\nλ ";
BROWSER = "firefox";
XINITRC = "${homeDir}/bin/xinitrc";
XAUTHORITY = "${homeDir}/.local/share/Xauthority";
PASH_KEYID = "3E4A909C8FEF6E3783699C79DFC26EF8EDAD6D71";
QT_AUTO_SCREEN_FACTOR = 1;
EDITOR = "emacsclient";
PATH = "${homeDir}/bin:$PATH";
NIX_SHELL_PRESERVE_PROMPT=1;
};
shellAliases = {
x = "startx";
rm = "rm -i";
cal = "cal -m";
};
initExtra = ''
source ~/.profile
set -o vi
[ "$IN_NIX_SHELL" ] && export PS1="''${PS1%λ } "
'';
};
emacs = {
enable = true;
package = pkgs.emacs-gtk;
extraPackages = epkgs: with epkgs; with melpaStablePackages; [
magit
nix-mode
julia-repl
julia-mode
lean-mode
proof-general
pdf-tools
dune
tuareg
idris-mode
haskell-emacs-base
multi-vterm
dmenu
markdown-preview-mode
markdown-mode
exwm
org-superstar
org-fragtog
visual-fill
writeroom-mode
haskell-emacs
treemacs-evil
treemacs
solarized-theme
doom-modeline
all-the-icons-dired
page-break-lines
all-the-icons
dashboard
org-evil
zotero
vterm
undo-fu
latex-math-preview
haskell-mode
evil-surround
undo-tree
evil-org
evil
evil-commentary
evil-leader
meow
purescript-mode
];
};
git = {
enable = true;
userName = "Rachel Lambda Samuelsson";
userEmail = "depsterr@protonmail.com";
extraConfig = {
init.defaultBranch = "master";
};
};
};
}

View File

@ -1,31 +1,17 @@
{ config, pkgs, ... }:
let SAX2 = pkgs.fetchurl {
name = "SAX2";
url = "https://abrudz.github.io/SAX2/SAX2.ttf";
sha256 = "sha256-DgvDWXO2fnKZNu9EvQOq8GNMTU3PUdp85+/0ZHdRXZc=";
recursiveHash = true;
downloadToTemp = true;
postFetch = ''
mkdir -p "$out/share/fonts/truetype"
mv "$downloadedFile" "$out/share/fonts/truetype/SAX2.ttf"
'';
};
in
rec {
{
# [HARDWARE]
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
<home-manager/nixos>
];
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
hardware.bluetooth.enable = true;
services.logind = {
lidSwitch = "hibernate";
lidSwitchDocked = "ignore";
@ -187,179 +173,13 @@ rec {
# [USER / HOME MANAGER]
users.users.rachel = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "video" "input" "audio" "wireshark" ];
};
home-manager.users.rachel = rec {
home = {
username = "rachel";
homeDirectory = "/home/rachel";
packages = with pkgs; [
neofetch
pfetch
unzip
zip
xz
gzip
bzip2
p7zip
usbutils
pciutils
nettools
nmap
arp-scan
acpi
julia
python3
ghc
firefox
sxiv
zathura
gnupg
agda
rofi
discord
pinentry_qt
dig
xxd
mpv
zoom-us
slack
imagemagick
ffmpeg
sl
cowsay
lolcat
fortune
banner
yt-dlp
libreoffice
protonmail-bridge
pass
protonvpn-cli
protonvpn-gui
thunderbird
tidal-hifi
signal-desktop
transmission-gtk
xclip
clinfo
glxinfo
vulkan-tools
obs-studio
file
gimp
SAX2
twemoji-color-font
bat
steam
steam-run
];
stateVersion = system.stateVersion;
};
xdg.userDirs = {
enable = true;
createDirectories = true;
desktop = "${home.homeDirectory}";
documents = "${home.homeDirectory}/doc";
download = "${home.homeDirectory}/dwn";
music = "${home.homeDirectory}/music";
pictures = "${home.homeDirectory}/img";
publicShare = "${home.homeDirectory}/srv";
templates = "${home.homeDirectory}/doc/templates";
videos = "${home.homeDirectory}/vid";
};
programs = {
bash = {
enable = true;
enableCompletion = true;
historyFile = "/dev/null";
sessionVariables = {
PS1 ="\\033[1m\\u\\033[0m@\\033[1m\\h\\033[0m: \\w\nλ ";
BROWSER = "firefox";
XINITRC = "${home.homeDirectory}/bin/xinitrc";
XAUTHORITY = "${home.homeDirectory}/.local/share/Xauthority";
PASH_KEYID = "3E4A909C8FEF6E3783699C79DFC26EF8EDAD6D71";
QT_AUTO_SCREEN_FACTOR = 1;
EDITOR = "emacsclient";
PATH = "${home.homeDirectory}/bin:$PATH";
NIX_SHELL_PRESERVE_PROMPT=1;
};
shellAliases = {
x = "startx";
rm = "rm -i";
cal = "cal -m";
};
initExtra = ''
source ~/.profile
set -o vi
[ "$IN_NIX_SHELL" ] && export PS1="''${PS1%λ } "
'';
};
emacs = {
enable = true;
package = pkgs.emacs-gtk;
extraPackages = epkgs: with epkgs; with melpaStablePackages; [
magit
nix-mode
julia-repl
julia-mode
lean-mode
proof-general
pdf-tools
dune
tuareg
idris-mode
haskell-emacs-base
multi-vterm
dmenu
markdown-preview-mode
markdown-mode
exwm
org-superstar
org-fragtog
visual-fill
writeroom-mode
haskell-emacs
treemacs-evil
treemacs
solarized-theme
doom-modeline
all-the-icons-dired
page-break-lines
all-the-icons
dashboard
org-evil
zotero
vterm
undo-fu
latex-math-preview
haskell-mode
evil-surround
undo-tree
evil-org
evil
evil-commentary
evil-leader
meow
purescript-mode
];
};
git = {
enable = true;
userName = "Rachel Lambda Samuelsson";
userEmail = "depsterr@protonmail.com";
extraConfig = {
init.defaultBranch = "master";
};
};
};
extraGroups = [
"wheel"
"networkmanager"
"video"
"input"
"audio"
];
};
# This value determines the NixOS release from which the default

View File

@ -1,2 +1,7 @@
# nix
This is my nixos configuration, once I have multiple machines running nix I'll devise some modular approach with device specific options in different files. I'm also interested in switching to a flakes based configuration at some point.
My flake-based nixos configuration.
* `flake.nix`: flake defining configurations
* `home`: contains home-manager user configs
* `lambda`: contains config for laptop