mirror of
https://github.com/librephoenix/nixos-config
synced 2025-01-19 07:05:51 +05:30
Compare commits
13 commits
f662ca1e37
...
95e3002ce7
Author | SHA1 | Date | |
---|---|---|---|
95e3002ce7 | |||
a5ad3eaac4 | |||
e4274b48e5 | |||
b5358a1adf | |||
7f0daacd08 | |||
8c0e989ed0 | |||
004ff7fa71 | |||
9b96819686 | |||
6b66128539 | |||
90fe9632d4 | |||
79afae5367 | |||
6f3bb3cca5 | |||
069e6efd08 |
|
@ -23,7 +23,7 @@ I wrote some reinstall notes for myself [[./install.org][here (install.org)]].
|
|||
|
||||
TLDR: You should™ be able to install my dotfiles to a fresh NixOS system with the following experimental script:
|
||||
#+begin_src sh :noeval
|
||||
nix-shell -p git --command "nix run gitlab:librephoenix/nixos-config --extra-experimental-features nix-command --extra-experimental-features flakes"
|
||||
nix-shell -p git --command "nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config"
|
||||
#+end_src
|
||||
|
||||
Disclaimer: Ultimately, I can't gaurantee this will work for anyone other than myself, so /use this at your own discretion/. Also my dotfiles are /highly/ opinionated, which you will discover immediately if you try them out.
|
||||
|
|
BIN
desktop.png
BIN
desktop.png
Binary file not shown.
Before Width: | Height: | Size: 3.9 MiB After Width: | Height: | Size: 6 MiB |
30
flake.lock
30
flake.lock
|
@ -150,11 +150,11 @@
|
|||
"blocklist-hosts": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1709174876,
|
||||
"narHash": "sha256-aEjfaOnfPxQ0Dd954SWHOA9JyYDJ2m/25FpMHjO9X+w=",
|
||||
"lastModified": 1709598696,
|
||||
"narHash": "sha256-jVrCuInshwebh+cAf1CV5zB8s/uW3oevrxLvhJ0X5vg=",
|
||||
"owner": "StevenBlack",
|
||||
"repo": "hosts",
|
||||
"rev": "b77a285f5f11ee53023d53cf2bf10cd58fe62567",
|
||||
"rev": "7e350cd634572851d9abe36783fa78f132221851",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -466,11 +466,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709485962,
|
||||
"narHash": "sha256-rmFB4uE10+LJbcVE4ePgiuHOBlUIjQOeZt4VQVJTU8M=",
|
||||
"lastModified": 1709938482,
|
||||
"narHash": "sha256-2Vw2WOFmEXWQH8ziFNOr0U48Guh5FacuD6BOEIcE99s=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "d579633ff9915a8f4058d5c439281097e92380a8",
|
||||
"rev": "17431970b4ebc75a92657101ccffcfc9e1f9d8f0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -582,11 +582,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1709237383,
|
||||
"narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=",
|
||||
"lastModified": 1709703039,
|
||||
"narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8",
|
||||
"rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -597,11 +597,11 @@
|
|||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1709309926,
|
||||
"narHash": "sha256-VZFBtXGVD9LWTecGi6eXrE0hJ/mVB3zGUlHImUs2Qak=",
|
||||
"lastModified": 1709677081,
|
||||
"narHash": "sha256-tix36Y7u0rkn6mTm0lA45b45oab2cFLqAzDbJxeXS+c=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "79baff8812a0d68e24a836df0a364c678089e2c7",
|
||||
"rev": "880992dcc006a5e00dd0591446fdf723e6a51a64",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -876,11 +876,11 @@
|
|||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709431943,
|
||||
"narHash": "sha256-CqTcEJGITB3rfSuAcWC1QZnbVnIipXmIDbZHfxsAy80=",
|
||||
"lastModified": 1709950089,
|
||||
"narHash": "sha256-JjZINymxtnDY9EDdxnVPideZvHPR2Cm/GdKAptCWLI4=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "362184acf4a991f27fc222864e94a2e81b3c3c9f",
|
||||
"rev": "d3a05d053b145349b8ad395741c5951f332280ef",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
238
flake.nix
238
flake.nix
|
@ -1,104 +1,107 @@
|
|||
{
|
||||
description = "Flake of LibrePhoenix";
|
||||
|
||||
outputs = inputs@{ self, nixpkgs, nixpkgs-stable, home-manager, nix-doom-emacs, nix-straight,
|
||||
stylix, blocklist-hosts, rust-overlay, hyprland-plugins,
|
||||
eaf, eaf-browser, org-nursery, org-yaap,
|
||||
org-side-tree, org-timeblock, phscroll, ... }:
|
||||
let
|
||||
# ---- SYSTEM SETTINGS ---- #
|
||||
systemSettings = {
|
||||
system = "x86_64-linux"; # system arch
|
||||
hostname = "snowfire"; # hostname
|
||||
profile = "personal"; # select a profile defined from my profiles directory
|
||||
timezone = "America/Chicago"; # select timezone
|
||||
locale = "en_US.UTF-8"; # select locale
|
||||
bootMode = "uefi"; # uefi or bios
|
||||
bootMountPath = "/boot"; # mount path for efi boot partition; only used for uefi boot mode
|
||||
grubDevice = ""; # device identifier for grub; only used for legacy (bios) boot mode
|
||||
};
|
||||
outputs = inputs@{ self, nixpkgs, nixpkgs-stable, home-manager, nix-doom-emacs,
|
||||
nix-straight, stylix, blocklist-hosts, hyprland-plugins, rust-overlay,
|
||||
org-nursery, org-yaap, org-side-tree, org-timeblock, phscroll, ... }:
|
||||
let
|
||||
# ---- SYSTEM SETTINGS ---- #
|
||||
systemSettings = {
|
||||
system = "x86_64-linux"; # system arch
|
||||
hostname = "snowfire"; # hostname
|
||||
profile = "personal"; # select a profile defined from my profiles directory
|
||||
timezone = "America/Chicago"; # select timezone
|
||||
locale = "en_US.UTF-8"; # select locale
|
||||
bootMode = "uefi"; # uefi or bios
|
||||
bootMountPath = "/boot"; # mount path for efi boot partition; only used for uefi boot mode
|
||||
grubDevice = ""; # device identifier for grub; only used for legacy (bios) boot mode
|
||||
};
|
||||
|
||||
# ----- USER SETTINGS ----- #
|
||||
userSettings = rec {
|
||||
username = "emmet"; # username
|
||||
name = "Emmet"; # name/identifier
|
||||
email = "emmet@librephoenix.com"; # email (used for certain configurations)
|
||||
dotfilesDir = "~/.dotfiles"; # absolute path of the local repo
|
||||
theme = "uwunicorn-yt"; # selcted theme from my themes directory (./themes/)
|
||||
wm = "hyprland"; # Selected window manager or desktop environment; must select one in both ./user/wm/ and ./system/wm/
|
||||
# window manager type (hyprland or x11) translator
|
||||
wmType = if (wm == "hyprland") then "wayland" else "x11";
|
||||
browser = "qutebrowser"; # Default browser; must select one from ./user/app/browser/
|
||||
defaultRoamDir = "Personal.p"; # Default org roam directory relative to ~/Org
|
||||
term = "alacritty"; # Default terminal command;
|
||||
font = "Intel One Mono"; # Selected font
|
||||
fontPkg = pkgs.intel-one-mono; # Font package
|
||||
editor = "emacsclient"; # Default editor;
|
||||
# editor spawning translator
|
||||
# generates a command that can be used to spawn editor inside a gui
|
||||
# EDITOR and TERM session variables must be set in home.nix or other module
|
||||
# I set the session variable SPAWNEDITOR to this in my home.nix for convenience
|
||||
spawnEditor = if (editor == "emacsclient") then "emacsclient -c -a 'emacs'"
|
||||
else (if ((editor == "vim") || (editor == "nvim") || (editor == "nano")) then "exec " + term + " -e " + editor else editor);
|
||||
};
|
||||
# ----- USER SETTINGS ----- #
|
||||
userSettings = rec {
|
||||
username = "emmet"; # username
|
||||
name = "Emmet"; # name/identifier
|
||||
email = "emmet@librephoenix.com"; # email (used for certain configurations)
|
||||
dotfilesDir = "~/.dotfiles"; # absolute path of the local repo
|
||||
theme = "uwunicorn-yt"; # selcted theme from my themes directory (./themes/)
|
||||
wm = "hyprland"; # Selected window manager or desktop environment; must select one in both ./user/wm/ and ./system/wm/
|
||||
# window manager type (hyprland or x11) translator
|
||||
wmType = if (wm == "hyprland") then "wayland" else "x11";
|
||||
browser = "qutebrowser"; # Default browser; must select one from ./user/app/browser/
|
||||
defaultRoamDir = "Personal.p"; # Default org roam directory relative to ~/Org
|
||||
term = "alacritty"; # Default terminal command;
|
||||
font = "Intel One Mono"; # Selected font
|
||||
fontPkg = pkgs.intel-one-mono; # Font package
|
||||
editor = "emacsclient"; # Default editor;
|
||||
# editor spawning translator
|
||||
# generates a command that can be used to spawn editor inside a gui
|
||||
# EDITOR and TERM session variables must be set in home.nix or other module
|
||||
# I set the session variable SPAWNEDITOR to this in my home.nix for convenience
|
||||
spawnEditor = if (editor == "emacsclient") then
|
||||
"emacsclient -c -a 'emacs'"
|
||||
else
|
||||
(if ((editor == "vim") ||
|
||||
(editor == "nvim") ||
|
||||
(editor == "nano")) then
|
||||
"exec " + term + " -e " + editor
|
||||
else
|
||||
editor);
|
||||
};
|
||||
|
||||
# create patched nixpkgs
|
||||
nixpkgs-patched =
|
||||
(import nixpkgs { system = systemSettings.system; }).applyPatches {
|
||||
name = "nixpkgs-patched";
|
||||
src = nixpkgs;
|
||||
patches = [ ./patches/emacs-no-version-check.patch ];
|
||||
};
|
||||
|
||||
# create patched nixpkgs
|
||||
nixpkgs-patched = (import nixpkgs { system = systemSettings.system; }).applyPatches {
|
||||
name = "nixpkgs-patched";
|
||||
src = nixpkgs;
|
||||
patches = [
|
||||
./patches/emacs-no-version-check.patch
|
||||
];
|
||||
};
|
||||
# configure pkgs
|
||||
pkgs = import nixpkgs-patched {
|
||||
system = systemSettings.system;
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
allowUnfreePredicate = (_: true);
|
||||
};
|
||||
overlays = [ rust-overlay.overlays.default ];
|
||||
};
|
||||
|
||||
# configure pkgs
|
||||
pkgs = import nixpkgs-patched {
|
||||
system = systemSettings.system;
|
||||
config = { allowUnfree = true;
|
||||
allowUnfreePredicate = (_: true); };
|
||||
overlays = [ rust-overlay.overlays.default ];
|
||||
};
|
||||
pkgs-stable = import nixpkgs-stable {
|
||||
system = systemSettings.system;
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
allowUnfreePredicate = (_: true);
|
||||
};
|
||||
};
|
||||
|
||||
pkgs-stable = import nixpkgs-stable {
|
||||
system = systemSettings.system;
|
||||
config = { allowUnfree = true;
|
||||
allowUnfreePredicate = (_: true); };
|
||||
overlays = [ rust-overlay.overlays.default ];
|
||||
};
|
||||
# configure lib
|
||||
lib = nixpkgs.lib;
|
||||
|
||||
# configure lib
|
||||
lib = nixpkgs.lib;
|
||||
# Systems that can run tests:
|
||||
supportedSystems = [ "aarch64-linux" "i686-linux" "x86_64-linux" ];
|
||||
|
||||
# Systems that can run tests:
|
||||
supportedSystems = [
|
||||
"aarch64-linux"
|
||||
"i686-linux"
|
||||
"x86_64-linux"
|
||||
];
|
||||
# Function to generate a set based on supported systems:
|
||||
forAllSystems = inputs.nixpkgs.lib.genAttrs supportedSystems;
|
||||
|
||||
# Function to generate a set based on supported systems:
|
||||
forAllSystems = inputs.nixpkgs.lib.genAttrs supportedSystems;
|
||||
# Attribute set of nixpkgs for each system:
|
||||
nixpkgsFor =
|
||||
forAllSystems (system: import inputs.nixpkgs { inherit system; });
|
||||
|
||||
# Attribute set of nixpkgs for each system:
|
||||
nixpkgsFor = forAllSystems (system:
|
||||
import inputs.nixpkgs { inherit system; });
|
||||
|
||||
in {
|
||||
homeConfigurations = {
|
||||
user = home-manager.lib.homeManagerConfiguration {
|
||||
in {
|
||||
homeConfigurations = {
|
||||
user = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [ (./. + "/profiles"+("/"+systemSettings.profile)+"/home.nix") # load home.nix from selected PROFILE
|
||||
# inputs.nix-flatpak.homeManagerModules.nix-flatpak # Declarative flatpaks
|
||||
];
|
||||
modules = [
|
||||
(./. + "/profiles" + ("/" + systemSettings.profile)
|
||||
+ "/home.nix") # load home.nix from selected PROFILE
|
||||
# inputs.nix-flatpak.homeManagerModules.nix-flatpak # Declarative flatpaks
|
||||
];
|
||||
extraSpecialArgs = {
|
||||
# pass config variables from above
|
||||
inherit pkgs-stable;
|
||||
inherit systemSettings;
|
||||
inherit userSettings;
|
||||
inherit (inputs) nix-doom-emacs;
|
||||
inherit (inputs) eaf;
|
||||
inherit (inputs) eaf-browser;
|
||||
inherit (inputs) org-nursery;
|
||||
inherit (inputs) org-yaap;
|
||||
inherit (inputs) org-side-tree;
|
||||
|
@ -108,40 +111,47 @@
|
|||
inherit (inputs) stylix;
|
||||
inherit (inputs) hyprland-plugins;
|
||||
};
|
||||
};
|
||||
};
|
||||
nixosConfigurations = {
|
||||
system = lib.nixosSystem {
|
||||
system = systemSettings.system;
|
||||
modules = [ (./. + "/profiles"+("/"+systemSettings.profile)+"/configuration.nix") ]; # load configuration.nix from selected PROFILE
|
||||
specialArgs = {
|
||||
# pass config variables from above
|
||||
inherit pkgs-stable;
|
||||
inherit systemSettings;
|
||||
inherit userSettings;
|
||||
inherit (inputs) stylix;
|
||||
inherit (inputs) blocklist-hosts;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
packages = forAllSystems (system:
|
||||
let pkgs = nixpkgsFor.${system}; in
|
||||
{
|
||||
default = self.packages.${system}.install;
|
||||
|
||||
install = pkgs.writeScriptBin "install" ./install.sh;
|
||||
});
|
||||
|
||||
apps = forAllSystems (system: {
|
||||
default = self.apps.${system}.install;
|
||||
|
||||
install = {
|
||||
type = "app";
|
||||
program = "${self.packages.${system}.install}/bin/install";
|
||||
nixosConfigurations = {
|
||||
system = lib.nixosSystem {
|
||||
system = systemSettings.system;
|
||||
modules = [
|
||||
(./. + "/profiles" + ("/" + systemSettings.profile)
|
||||
+ "/configuration.nix")
|
||||
]; # load configuration.nix from selected PROFILE
|
||||
specialArgs = {
|
||||
# pass config variables from above
|
||||
inherit pkgs-stable;
|
||||
inherit systemSettings;
|
||||
inherit userSettings;
|
||||
inherit (inputs) stylix;
|
||||
inherit (inputs) blocklist-hosts;
|
||||
};
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
packages = forAllSystems (system:
|
||||
let pkgs = nixpkgsFor.${system};
|
||||
in {
|
||||
default = self.packages.${system}.install;
|
||||
|
||||
install = pkgs.writeShellApplication {
|
||||
name = "install";
|
||||
runtimeInputs = with pkgs; [ git ]; # I could make this fancier by adding other deps
|
||||
text = ''${./install.sh} "$@"'';
|
||||
};
|
||||
});
|
||||
|
||||
apps = forAllSystems (system: {
|
||||
default = self.apps.${system}.install;
|
||||
|
||||
install = {
|
||||
type = "app";
|
||||
program = "${self.packages.${system}.install}/bin/install";
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||
|
@ -190,8 +200,6 @@
|
|||
|
||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||
|
||||
#nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.2.0";
|
||||
|
||||
blocklist-hosts = {
|
||||
url = "github:StevenBlack/hosts";
|
||||
flake = false;
|
||||
|
|
30
install.org
30
install.org
|
@ -29,12 +29,12 @@ nix-shell -p git
|
|||
#+end_src
|
||||
and then running:
|
||||
#+BEGIN_SRC sh :noeval
|
||||
nix-run gitlab:librephoenix/nixos-config --extra-experimental-features nix-command --extra-experimental-features flakes
|
||||
nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config
|
||||
#+END_SRC
|
||||
|
||||
And if you want a single copy-paste solution:
|
||||
#+begin_src sh :noeval
|
||||
nix-shell -p git --command "nix run gitlab:librephoenix/nixos-config --extra-experimental-features nix-command --extra-experimental-features flakes"
|
||||
nix-shell -p git --command "nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config"
|
||||
#+end_src
|
||||
|
||||
At a certain point in the install script it will open =nano= (or whatever your $EDITOR is set to) and ask you to edit the =flake.nix=. You can edit as much or as little of the config variables as you like, and it will continue the install after you exit the editor.
|
||||
|
@ -56,7 +56,7 @@ git clone https://gitlab.com/librephoenix/nixos-config.git ~/.dotfiles
|
|||
|
||||
At a certain point in the install script it will open =nano= (or whatever your =$EDITOR= is set to) and ask you to edit the =flake.nix=. You can edit as much or as little of the config variables as you like, and it will continue the install after you exit the editor.
|
||||
|
||||
Potential Errors: I've only tested it working on UEFI with the default EFI mount point of =/boot=. I've added experimental legacy (BIOS) boot support, but it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader.
|
||||
Potential Errors: I mainly only test this on UEFI, but I've added experimental legacy (BIOS) boot support. Keep in mind, it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader.
|
||||
|
||||
Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled.
|
||||
|
||||
|
@ -101,7 +101,16 @@ let
|
|||
|
||||
There are many more config options there that you may also want to change as well.
|
||||
|
||||
Potential Errors: I've only tested it working on UEFI with the default EFI mount point of =/boot=. I've added experimental legacy (BIOS) boot support, but it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader.
|
||||
The build will fail if you are booting from BIOS instead of UEFI, unless change some of the system settings of the flake. Change =bootMode= to "bios" and set the =grubDevice= appropriately for your system (i.e. =/dev/vda= or =/dev/sda=).
|
||||
#+begin_src nix :noeval
|
||||
...
|
||||
let
|
||||
# ---- SYSTEM SETTINGS ---- #
|
||||
systemSettings = {
|
||||
bootMode = "bios"; # uefi or bios
|
||||
grubDevice = "/dev/vda"; # device identifier for grub; find this by running lsblk
|
||||
};
|
||||
#+end_src
|
||||
|
||||
Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled.
|
||||
|
||||
|
@ -115,9 +124,6 @@ Once the variables are set, then switch into the system configuration by running
|
|||
sudo nixos-rebuild switch --flake ~/.dotfiles#system
|
||||
#+END_SRC
|
||||
|
||||
The build will fail if you are booting from BIOS instead of UEFI.
|
||||
# TODO write instructions on how to fix install on bios instead of uefi
|
||||
|
||||
*** Intall and Switch Home Manager Config
|
||||
Home manager can be installed and the configuration activated with:
|
||||
#+BEGIN_SRC sh :noeval
|
||||
|
@ -143,3 +149,13 @@ Enable 3D acceleration for your virtual machine. Hyprland doesn't work without i
|
|||
|
||||
*** It fails installing with some weird errors about grub or a bootloader?
|
||||
It will 100% fail if you test it with a non-default boot configuration. It might even give this error otherwise! If this is the case, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before installing again.
|
||||
|
||||
*** The install seems to work, but when I login, I'm missing a lot of stuff (partial install)
|
||||
This can happen if you run the autoinstall script on a system that already has a desktop environment, or if any other (non-Nix-store-symlink) config files are in the way of the config files generated by home-manager. In these cases, home-manager refuses to build anything, even if there's just one file in the way. If you try running =nix run home-manager/master -- switch --flake ~/.dotfiles#user=, it should throw an error at the end with something like:
|
||||
#+begin_example
|
||||
Existing file '/home/user/.gtkrc-2.0' is in the way of '/nix/store/6p3hzdbzhad8ra5j1qf4b2b3hs6as6sf-home-manager-files/.gtkrc-2.0'
|
||||
Existing file '/home/user/.config/Trolltech.conf' is in the way of '/nix/store/6p3hzdbzhad8ra5j1qf4b2b3hs6as6sf-home-manager-files/.config/Trolltech.conf'
|
||||
Existing file '/home/user/.config/user-dirs.conf' is in the way of '/nix/store/6p3hzdbzhad8ra5j1qf4b2b3hs6as6sf-home-manager-files/.config/user-dirs.conf'
|
||||
...
|
||||
#+end_example
|
||||
The current solution to this is to delete or move the files mentioned so that home-manager can evaluate. Once the files are out of the way, just run =nix run home-manager/master -- switch --flake ~/.dotfiles#user= again and it should work!
|
||||
|
|
|
@ -92,10 +92,31 @@
|
|||
vlc
|
||||
mpv
|
||||
yt-dlp
|
||||
#freetube
|
||||
blender
|
||||
#blockbench-electron
|
||||
cura
|
||||
curaengine_stable
|
||||
(stdenv.mkDerivation {
|
||||
name = "cura-slicer";
|
||||
version = "0.0.7";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Spiritdude";
|
||||
repo = "Cura-CLI-Wrapper";
|
||||
rev = "ff076db33cfefb770e1824461a6336288f9459c7";
|
||||
sha256 = "sha256-BkvdlqUqoTYEJpCCT3Utq+ZBU7g45JZFJjGhFEXPXi4=";
|
||||
};
|
||||
phases = "installPhase";
|
||||
installPhase = ''
|
||||
mkdir -p $out $out/bin $out/share $out/share/cura-slicer
|
||||
cp $src/cura-slicer $out/bin
|
||||
cp $src/settings/fdmprinter.def.json $out/share/cura-slicer
|
||||
cp $src/settings/base.ini $out/share/cura-slicer
|
||||
sed -i 's+#!/usr/bin/perl+#! /usr/bin/env nix-shell\n#! nix-shell -i perl -p perl538 perl538Packages.JSON+g' $out/bin/cura-slicer
|
||||
sed -i 's+/usr/share+/home/${userSettings.username}/.nix-profile/share+g' $out/bin/cura-slicer
|
||||
'';
|
||||
propagatedBuildInputs = with pkgs; [
|
||||
curaengine_stable
|
||||
];
|
||||
})
|
||||
obs-studio
|
||||
kdenlive
|
||||
ffmpeg
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
{
|
||||
imports = [ ../homelab/base.nix
|
||||
( import ../../system/security/sshd.nix {
|
||||
# TODO add public ssh key for worklab
|
||||
authorizedKeys = [ ];
|
||||
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBW6X3nd54sLK5UOvkyxBZ0dC57+xXKsAkr6XyP3k64gsFNahIYZGyZ+E9DdGIP1SZPDkwlcnGfFTPo/dPq5QjxtBmAOd/q4hIb5mqojNfOwqZQVwHjzLYSiGBaMVe4XAGCoNxTwXTimVU8wtyvlmBJzuOLmxZq9tRBpN3g+PT5HT1S9mrrQ4l5Y+2CNTwfga6/+/H1g4hpYG6H9qdIWOrel1hWvGUH3A1d/5mJIx3GkOAl7WBReQNbwlTm/8mkIcNBMtp3JQg5yuTQ6dLGwMOspMB5sGSCnaDx6CrelQglRihxkunW9ktA2MYaIn3l5fNwaHilW63d0sb9Y/Rr/bFKybmGYVY4PR9+tQg4D4YqofkSfRKmB98dtxUZg4yduXjxCYrhDTDseCjXACncItdD9TmxabaBQtWiWIGmX3bhx31SoctwdpS+mzbB5WVIVb/Fo/cOvPj6ugB5ZQf2uH+U5nsGVYsSsNGS1zVDybeILr1z2ne2AcaqwB5Z7iz/E0=" ];
|
||||
inherit userSettings; })
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
sha256-C+gURQ6K+OSnw4GNqLe+q/1sNRDbUj4WG5WY5yAhM5s=
|
||||
sha256-GjM/Bu0zispdtPCFPzAk+zGlKYYg5XwTTxZ0TXOW9Fg=
|
||||
|
|
|
@ -1 +1 @@
|
|||
https://images5.alphacoders.com/134/1344471.png
|
||||
https://images.hdqwalls.com/wallpapers/aurora-s-embrace-a-borealis-beauty-in-anime-ub.jpg
|
||||
|
|
|
@ -1246,7 +1246,7 @@ https://github.com/magit/magit/issues/460 (@cpitclaudel)."
|
|||
"q" 'helpful-kill-buffers)
|
||||
|
||||
;;;------ helpful configuration ------;;;
|
||||
(add-load-path! "~/.nix-profile/share/emacs/site-lisp/elpa/mu4e-1.12.0")
|
||||
(add-load-path! "~/.nix-profile/share/emacs/site-lisp/elpa/mu4e-1.12.1")
|
||||
(require 'mu4e)
|
||||
(require 'mu4e-contrib)
|
||||
(require 'mu4e-actions)
|
||||
|
@ -1255,7 +1255,7 @@ https://github.com/magit/magit/issues/460 (@cpitclaudel)."
|
|||
(setq mu4e-sent-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Sent")))
|
||||
(setq mu4e-drafts-folder (lambda (msg) (concat "/" user-mail-address "/Drafts")))
|
||||
(setq mu4e-trash-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Trash")))
|
||||
(setq mu4e-refile-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Archive")))
|
||||
(setq mu4e-refile-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Folders/" (completing-read "Refile msg to: " (directory-files (concat "~/.mail/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Folders"))))))
|
||||
|
||||
(setq mu4e-index-lazy-check t)
|
||||
(setq mu4e-index-cleanup t)
|
||||
|
@ -1343,6 +1343,7 @@ https://github.com/magit/magit/issues/460 (@cpitclaudel)."
|
|||
|
||||
(add-hook 'mu4e-compose-mode-hook #'no-auto-fill)
|
||||
(add-hook 'mu4e-compose-pre-hook #'no-org-msg-mode)
|
||||
|
||||
)
|
||||
|
||||
;;;-- Load emacs direnv;;;--
|
||||
|
|
|
@ -1469,7 +1469,7 @@ I don't have this active right now since it's kinda weird with pgtk...
|
|||
** mu4e Configuration
|
||||
#+BEGIN_SRC emacs-lisp :tangle config.el
|
||||
;;;------ helpful configuration ------;;;
|
||||
(add-load-path! "~/.nix-profile/share/emacs/site-lisp/elpa/mu4e-1.12.0")
|
||||
(add-load-path! "~/.nix-profile/share/emacs/site-lisp/elpa/mu4e-1.12.1")
|
||||
(require 'mu4e)
|
||||
(require 'mu4e-contrib)
|
||||
(require 'mu4e-actions)
|
||||
|
@ -1478,7 +1478,7 @@ I don't have this active right now since it's kinda weird with pgtk...
|
|||
(setq mu4e-sent-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Sent")))
|
||||
(setq mu4e-drafts-folder (lambda (msg) (concat "/" user-mail-address "/Drafts")))
|
||||
(setq mu4e-trash-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Trash")))
|
||||
(setq mu4e-refile-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Archive")))
|
||||
(setq mu4e-refile-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Folders/" (completing-read "Refile msg to: " (directory-files (concat "~/.mail/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Folders"))))))
|
||||
|
||||
(setq mu4e-index-lazy-check t)
|
||||
(setq mu4e-index-cleanup t)
|
||||
|
@ -1566,6 +1566,7 @@ I don't have this active right now since it's kinda weird with pgtk...
|
|||
|
||||
(add-hook 'mu4e-compose-mode-hook #'no-auto-fill)
|
||||
(add-hook 'mu4e-compose-pre-hook #'no-org-msg-mode)
|
||||
|
||||
)
|
||||
|
||||
#+END_SRC
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, pkgs-stable, ... }:
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
myRetroarch =
|
||||
(pkgs.retroarch.override {
|
||||
|
@ -18,7 +18,7 @@ let
|
|||
}))
|
||||
dolphin
|
||||
genesis-plus-gx
|
||||
] ++ [pkgs-stable.libretro.citra];
|
||||
];
|
||||
});
|
||||
in
|
||||
{
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
myYtpScript = ''
|
||||
#!/bin/sh
|
||||
ytsub --video-player mpv
|
||||
'';
|
||||
myYtaScript = ''
|
||||
#!/bin/sh
|
||||
yt-dlp -x --audio-format mp3 $1
|
||||
'';
|
||||
myYtdScript = ''
|
||||
#!/bin/sh
|
||||
pushd ~/Media/Podcasts;
|
||||
ytsub --video-player ~/.nix-profile/bin/yta;
|
||||
popd;
|
||||
'';
|
||||
in
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.yt-dlp
|
||||
(pkgs.writeScriptBin "ytp" myYtpScript)
|
||||
(pkgs.writeScriptBin "yta" myYtaScript)
|
||||
(pkgs.writeScriptBin "ytd" myYtdScript)
|
||||
];
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
{ lib, fetchgit, pkgs, ... }:
|
||||
let
|
||||
rustPlatform = pkgs.makeRustPlatform {
|
||||
cargo = pkgs.rust-bin.stable.latest.minimal;
|
||||
rustc = pkgs.rust-bin.stable.latest.minimal;
|
||||
};
|
||||
in
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "russ";
|
||||
version = "unstable";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/ckampfe/russ.git";
|
||||
rev = "1482bb1df13738fdd4ea1badf2146a9ed8e6656e";
|
||||
sha256 = "sha256-MvTMo2q/cQ/LQNdUV8SmHgGlA42kLl0i9mdcoAFV/I4=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-/r1Dp7eh2qVYRGINVdPq6e8c9U/R2AzVEy/g+j/GRPo=";
|
||||
|
||||
checkType = "debug";
|
||||
checkFlags = [
|
||||
# network required tests don't work when building with nix for some reason
|
||||
"--skip=rss::tests::it_fetches"
|
||||
"--skip=rss::tests::it_subscribes_to_a_feed"
|
||||
"--skip=rss::tests::refresh_feed_does_not_add_any_items_if_there_are_no_new_items"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A TUI RSS reader with vim-like controls and a local-first, offline-first focus ";
|
||||
homepage = "https://github.com/ckampfe/russ";
|
||||
license = licenses.agpl3Only;
|
||||
maintainers = [];
|
||||
};
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
{ lib, pkgs, ... }:
|
||||
let
|
||||
rustPlatform = pkgs.makeRustPlatform {
|
||||
cargo = pkgs.rust-bin.stable.latest.minimal;
|
||||
rustc = pkgs.rust-bin.stable.latest.minimal;
|
||||
};
|
||||
in
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "ytsub";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchTarball {
|
||||
url = "https://github.com/sarowish/ytsub/archive/refs/tags/v0.4.0.tar.gz";
|
||||
sha256 = "1124mf5r2507d2939833xkavy2vi2rbws67dkim4vwah376k3rlf";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-pv4eKD2XgaDAJqSf3JzfnsayofmOSy4XRzZ8rkZrHAo=";
|
||||
|
||||
buildNoDefaultFeatures = true;
|
||||
buildFeatures = [ "bundled_sqlite" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A subscriptions only TUI Youtube client that uses the Invidious API";
|
||||
homepage = "https://github.com/sarowish/ytsub";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = [];
|
||||
};
|
||||
}
|
|
@ -4,29 +4,26 @@
|
|||
# Collection of useful CLI apps
|
||||
home.packages = with pkgs; [
|
||||
# Command Line
|
||||
disfetch neofetch lolcat cowsay onefetch starfetch
|
||||
disfetch lolcat cowsay
|
||||
starfetch
|
||||
cava
|
||||
gnugrep gnused
|
||||
killall
|
||||
libnotify
|
||||
timer
|
||||
brightnessctl
|
||||
gnugrep
|
||||
bat eza fd bottom ripgrep
|
||||
rsync
|
||||
tmux
|
||||
htop
|
||||
hwinfo
|
||||
unzip
|
||||
brightnessctl
|
||||
tmux
|
||||
w3m
|
||||
fzf
|
||||
pandoc
|
||||
hwinfo
|
||||
pciutils
|
||||
(pkgs.callPackage ../pkgs/smartcalc.nix { })
|
||||
(pkgs.writeShellScriptBin "sc" ''smartcalc'')
|
||||
#(pkgs.callPackage ../pkgs/ytsub.nix { })
|
||||
#(pkgs.callPackage ../pkgs/russ.nix { })
|
||||
#(pkgs.python3Packages.callPackage ../pkgs/impressive.nix { })
|
||||
(pkgs.callPackage ../pkgs/pokemon-colorscripts.nix { })
|
||||
#(pkgs.python3Packages.callPackage ../pkgs/impressive.nix { })
|
||||
(pkgs.writeShellScriptBin "airplane-mode" ''
|
||||
#!/bin/sh
|
||||
connectivity="$(nmcli n connectivity)"
|
||||
|
@ -42,6 +39,5 @@
|
|||
|
||||
imports = [
|
||||
../bin/phoenix.nix # My nix command wrapper
|
||||
../bin/ytsub-wrappers.nix # My ytsub wrapper
|
||||
];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue